مجوز برنامه های OAUTH

ساخت وبلاگ

اجرای OAUTH GitHub از نوع کمک هزینه کد مجوز استاندارد و کمک هزینه مجوز دستگاه OAUTH 2. 0 برای برنامه هایی که به مرورگر وب دسترسی ندارند ، پشتیبانی می کند.

اگر می خواهید مجوز برنامه خود را به روش استاندارد ، مانند هنگام آزمایش برنامه خود ، پرش کنید ، می توانید از جریان برنامه غیر WEB استفاده کنید.

برای مجاز بودن برنامه OAUTH خود ، در نظر بگیرید که کدام مجوز به بهترین وجه متناسب با برنامه شما است.

  • جریان برنامه وب: برای مجوز کاربران برای برنامه های استاندارد OAuth که در مرورگر اجرا می شوند ، استفاده می شود.(نوع کمک هزینه ضمنی پشتیبانی نمی شود.)
  • جریان دستگاه: برای برنامه های بدون سر ، مانند ابزار CLI استفاده می شود.

جریان برنامه وب

توجه: اگر در حال ساخت برنامه GitHub هستید ، هنوز هم می توانید از جریان برنامه وب OAuth استفاده کنید ، اما تنظیمات تفاوت های مهمی دارد. برای اطلاعات بیشتر به "تأیید اعتبار با یک برنامه GitHub از طرف کاربر" مراجعه کنید.

جریان برنامه وب برای مجوز کاربران برای برنامه شما عبارت است از:

  1. کاربران برای درخواست هویت GitHub خود هدایت می شوند
  2. کاربران توسط GitHub به سایت شما هدایت می شوند
  3. برنامه شما با نشانه دسترسی کاربر به API دسترسی پیدا می کند

1. از هویت GitHub کاربر درخواست کنید

https://github. com/login/oauth/authorize را دریافت کنید 

این نقطه پایانی پارامترهای ورودی زیر را می گیرد:

 

نام نوع شرح
شناسه مشتری رشته ضروری . شناسه مشتری که هنگام ثبت نام از GitHub دریافت کرده اید.
Redirect_uri رشته URL در برنامه شما که کاربران پس از مجوز ارسال می شوند. جزئیات زیر را در مورد URL های تغییر مسیر مشاهده کنید.
وارد شدن رشته یک حساب خاص برای استفاده برای ورود به سیستم و مجوز برنامه پیشنهاد می کند.
محدوده رشته لیستی از دامنه های محدود فضا. در صورت عدم ارائه ، دامنه پیش فرض در لیست خالی برای کاربرانی که هیچ گونه دامنه ای برای برنامه را مجاز نداده اند. برای کاربرانی که اسکوپ های برنامه را مجاز کرده اند ، به کاربر صفحه مجوز OAUTH با لیست Scopes نشان داده نمی شود. در عوض ، این مرحله از جریان به طور خودکار با مجموعه ای از Scopes که کاربر مجاز به برنامه است ، تکمیل می شود. به عنوان مثال ، اگر کاربر قبلاً دو بار جریان وب را انجام داده باشد و یک نشانه را با دامنه کاربر و یک نشانه دیگر با دامنه repo مجاز کرده باشد ، یک جریان وب سوم که دامنه ای را ارائه نمی دهد ، با کاربر و دامنه repo یک نشانه دریافت می کند.
حالت رشته یک رشته تصادفی غیرقابل توصیف. از آن برای محافظت در برابر درخواست های جعلی در سایت استفاده می شود.
Allow_signup رشته این که آیا به کاربران غیرمجاز گزینه ای برای ثبت نام در GitHub در طول جریان OAUTH ارائه می شود. پیش فرض درست است. وقتی خط مشی ثبت نام را ممنوع می کند ، از کاذب استفاده کنید.

2. کاربران توسط GitHub به سایت شما هدایت می شوند

اگر کاربر درخواست شما را بپذیرد ، GitHub با یک کد موقت در یک پارامتر کد و همچنین وضعیتی که در مرحله قبل در یک پارامتر حالت ارائه داده اید ، به سایت شما بازگردد. کد موقت پس از 10 دقیقه منقضی می شود. اگر ایالت ها مطابقت نداشته باشند ، شخص ثالث درخواست را ایجاد کرد و شما باید روند کار را سقط کنید.

این کد را برای یک نشانه دسترسی تبادل کنید:

ارسال https://github. com/login/oauth/access_token 

این نقطه پایانی پارامترهای ورودی زیر را می گیرد:

 

نام نوع شرح
شناسه مشتری رشته ضروری. شناسه مشتری که از GitHub برای برنامه OAuth خود دریافت کرده اید.
Client_secret رشته ضروری. راز مشتری که از GitHub برای برنامه OAuth خود دریافت کرده اید.
رمز رشته ضروری. کدی که به عنوان پاسخ به مرحله 1 دریافت کردید.
Redirect_uri رشته URL در برنامه شما که کاربران پس از مجوز ارسال می شوند.

به طور پیش فرض ، پاسخ فرم زیر را می گیرد:

Access_Token = GHO_16C7E42F292C6912E7710C838347AE178B4A & SCOPE = repo ٪ 2Cgist & token_type = تحمل 

در صورت ارائه فرمت در عنوان پذیرش ، می توانید پاسخ را در قالب های مختلف دریافت کنید. به عنوان مثال ، قبول: برنامه/json یا پذیرش: برنامه/xml:

تایید کنید:برنامه/JSON "نشانه دسترسی":"GHO_16C7E42F292C6912E710C838347AE178B4A", "محدوده":"repo ، gist", "token_type":"تحمل" > 
قبول: برنامه/XMLاوت> نوع token_type>TOKEN_TYPE> محدوده>repo ، دامنه GIST> نشانه دسترسی>GHO_16C7E42F292C6912E7710C838347AE178B4A ACCESS_TOKEN>اوت> 

3. برای دسترسی به API از نشانه دسترسی استفاده کنید

نشانه Access به شما امکان می دهد از طرف کاربر درخواست هایی را به API انجام دهید.

مجوز: Bearer Oauth-token دریافت https://api. github. com/user 

به عنوان مثال ، در Curl می توانید عنوان مجوز را مانند این تنظیم کنید:

cur l-h "مجوز: Bearer oaut h-token" https://api. github. com/user

توجه: جریان دستگاه در بتا عمومی است و در معرض تغییر است.

جریان دستگاه به شما امکان می دهد تا کاربران را برای یک برنامه بدون سر ، مانند یک ابزار CLI یا مدیر اعتبار GIT مجاز کنید.

قبل از اینکه بتوانید از جریان دستگاه برای مجوز و شناسایی کاربران استفاده کنید ، ابتدا باید آن را در تنظیمات برنامه خود فعال کنید. برای کسب اطلاعات بیشتر در مورد فعال کردن جریان دستگاه در برنامه خود ، به "اصلاح یک برنامه OAuth" برای برنامه های OAuth و "اصلاح یک برنامه GitHub" برای برنامه های GitHub مراجعه کنید.

نمای کلی از جریان دستگاه

  1. برنامه شما از دستگاه و کدهای تأیید کاربر درخواست می کند و URL مجوز را دریافت می کند که کاربر کد تأیید کاربر را وارد می کند.
  2. این برنامه از کاربر ترغیب می کند تا کد تأیید کاربر را در https://github. com/login/device وارد کند.
  3. برنامه برای وضعیت احراز هویت کاربر نظرسنجی می کند. هنگامی که کاربر به دستگاه اجازه داده است ، برنامه قادر به برقراری تماس های API با یک نشانه دسترسی جدید خواهد بود.

مرحله 1: برنامه کدهای تأیید دستگاه و کاربر را از GitHub درخواست می کند

ارسال https://github. com/login/device/code 

برنامه شما باید یک کد تأیید کاربر و URL تأیید را که برنامه از آن استفاده می کند درخواست کند تا کاربر را در مرحله بعدی تأیید کند. این درخواست همچنین یک کد تأیید دستگاه را که برنامه باید برای دریافت نشانه دسترسی از آن استفاده کند ، باز می گرداند و وضعیت تأیید اعتبار کاربر را بررسی می کند.

نقطه پایانی پارامترهای ورودی زیر را می گیرد:

 

نام نوع شرح
شناسه مشتری رشته ضروری. شناسه مشتری که برای برنامه خود از GitHub دریافت کرده اید.
محدوده رشته دامنه ای که برنامه شما درخواست دسترسی دارد.

به طور پیش فرض ، پاسخ فرم زیر را می گیرد:

CODE_CODE = 3584D8353057FDD1F46AF828938C8EF79F9DC5 & EXPIRES_IN = 900 و فاصله = 5 & user_code = WDJB-mjht & Verification_uri = https ٪ 3a ٪ 2f ٪ ٪ github. com ٪ github. 2flogin ٪ 2fdevice 
نام نوع شرح
کد_ رشته کد تأیید دستگاه 40 کاراکتر است و برای تأیید دستگاه استفاده می شود.
کد_ کاربر رشته کد تأیید کاربر روی دستگاه نمایش داده می شود تا کاربر بتواند کد را در یک مرورگر وارد کند. این کد 8 کاراکتر با یک هیفن در وسط است.
veritification_uri رشته URL تأیید در جایی که کاربران نیاز به وارد کردن user_code دارند: https://github. com/login/device.
منقضی می شود عدد صحیح تعداد ثانیه های قبل از دستگاه_کود و user_code منقضی می شود. پیش فرض 900 ثانیه یا 15 دقیقه است.
فاصله عدد صحیح برای تکمیل مجوز دستگاه ، حداقل تعداد ثانیه هایی که باید عبور کنید قبل از اینکه بتوانید درخواست جدید Token (ارسال https://github. com/login/oauth/access_token) ایجاد کنید. به عنوان مثال ، اگر فاصله 5 باشد ، تا 5 ثانیه نمی توانید درخواست جدیدی ایجاد کنید. اگر بیش از 5 ثانیه بیش از یک درخواست ایجاد کنید ، به حد نرخ ضربه می زنید و یک خطای Slow_down دریافت می کنید.

در صورت ارائه فرمت در عنوان پذیرش ، می توانید پاسخ را در قالب های مختلف دریافت کنید. به عنوان مثال ، قبول: برنامه/json یا پذیرش: برنامه/xml:

تایید کنید:برنامه/JSON "دستگاه_ کد": "3584D83530557FDD1F46AF8289938C8EF79F9DC5", "user_code": "WDJB-MJHT", "Verification_uri": "https://github. com/login/device", "منقضی می شود": 900, "فاصله": 5 > 
قبول: برنامه/XMLاوت> کد_>3584D83530557FDD1F46AF8289938C8EF79F9DC5 دستگاه_کد> کد_ کاربر>WDJB-MJHT user_code> veritification_uri>https://github. com/login/device veritification_uri> منقضی می شود>900 منقضی شده_ین> فاصله>5 بازه>اوت> 

مرحله 2: کاربر را وادار کنید تا کد کاربر را در یک مرورگر وارد کند

دستگاه شما کد تأیید کاربر را نشان می دهد و کاربر را وادار می کند تا کد را در https://github. com/login/device وارد کند.

مرحله 3: نظرسنجی برنامه GitHub برای بررسی اینکه آیا کاربر مجاز به دستگاه است

ارسال https://github. com/login/oauth/access_token 

برنامه شما درخواست های مجوز دستگاه را ارائه می دهد که پست نظرسنجی https://github. com/login/oauth/access_token ، تا زمانی که دستگاه و کدهای کاربر منقضی شوند یا کاربر با موفقیت برنامه را با کد کاربر معتبر مجاز کرده باشد. برنامه باید از حداقل فاصله نظرسنجی بازیابی شده در مرحله 1 استفاده کند تا از خطاهای محدودیت نرخ جلوگیری شود. برای اطلاعات بیشتر ، به "محدودیت نرخ برای جریان دستگاه" مراجعه کنید.

کاربر باید ظرف 15 دقیقه (یا 900 ثانیه) یک کد معتبر وارد کند. پس از 15 دقیقه ، شما نیاز به درخواست کد مجوز دستگاه جدید با ارسال https://github. com/login/device/code دارید.

پس از مجاز بودن کاربر ، برنامه یک نشانه دسترسی دریافت می کند که می تواند برای درخواست API از طرف کاربر استفاده شود.

نقطه پایانی پارامترهای ورودی زیر را می گیرد:

 

نام نوع شرح
شناسه مشتری رشته ضروری. شناسه مشتری که از GitHub برای برنامه OAuth خود دریافت کرده اید.
کد_ رشته ضروری. کد تأیید دستگاه که از پست https://github. com/login/device/code دریافت کرده اید.
Grant_Type رشته ضروری. نوع کمک هزینه باید URN باشد: IETF: PARAMS: OAUTH: Grant-Type: Feel_Code.

به طور پیش فرض ، پاسخ فرم زیر را می گیرد:

Access_Token = GHO_16C7E42F292C6912E7710C838347AE178B4A & TOKEN_TYPE = تحمل و دامنه = repo ٪ 2Cgist 

در صورت ارائه فرمت در عنوان پذیرش ، می توانید پاسخ را در قالب های مختلف دریافت کنید. به عنوان مثال ، قبول: برنامه/json یا پذیرش: برنامه/xml:

تایید کنید:برنامه/JSON "نشانه دسترسی": "GHO_16C7E42F292C6912E710C838347AE178B4A", "token_type": "تحمل", "محدوده": "repo ، gist" > 
قبول: برنامه/XMLاوت> نشانه دسترسی>GHO_16C7E42F292C6912E7710C838347AE178B4A ACCESS_TOKEN> نوع token_type>TOKEN_TYPE> محدوده>بخش ، دامنه repo>اوت> 

محدودیت نرخ برای جریان دستگاه

هنگامی که کاربر کد تأیید را در مرورگر ارسال می کند ، محدودیت نرخ 50 ارسال در یک ساعت در هر برنامه وجود دارد.

اگر بیش از یک درخواست Token Access (ارسال https://github. com/login/oauth/access_token) را در حداقل بازه زمانی مورد نیاز بین درخواست ها (یا فاصله) ارسال کنید ، به حد نرخ ضربه می زنید و پاسخ خطای Slow_Down را دریافت می کنیدبشرپاسخ خطای Slow_Down 5 ثانیه به آخرین بازه اضافه می کند. برای اطلاعات بیشتر ، خطاهای مربوط به جریان دستگاه را ببینید.

کدهای خطا برای جریان دستگاه

کد خطا شرح
مجوز_ این خطا هنگامی رخ می دهد که درخواست مجوز در انتظار است و کاربر هنوز کد کاربر را وارد نکرده است. پیش بینی می شود این برنامه نظرسنجی را در مورد پست https://github. com/login/oauth/access_token بدون بیش از فاصله ، ادامه دهد ، که به حداقل تعداد ثانیه بین هر درخواست نیاز دارد.
آهسته_ هنگامی که خطای Slow_down را دریافت می کنید ، 5 ثانیه اضافی به حداقل فاصله یا بازه زمانی مورد نیاز بین درخواست های خود با استفاده از پست https://github. com/login/oauth/access_token اضافه می شود. به عنوان مثال ، اگر فاصله شروع حداقل 5 ثانیه بین درخواست ها نیاز داشته باشد و پاسخ خطای آهسته را دریافت کنید ، اکنون باید حداقل 10 ثانیه صبر کنید تا قبل از درخواست جدید برای یک نشانه دسترسی OAUTH. پاسخ خطا شامل فاصله جدیدی است که باید از آن استفاده کنید.
منقضی شده_کون اگر کد دستگاه منقضی شود ، خطای Token_expired را مشاهده خواهید کرد. شما باید درخواست جدیدی برای کد دستگاه ایجاد کنید.
پشتیبانی نشده_Grant_Type نوع کمک هزینه باید URN باشد: IETF: PARAMS: OAUTH: Grant-Type: type_code و هنگام نظرسنجی در مورد درخواست توکن oauth https://github. com/login/oauth/access_token به عنوان یک پارامتر ورودی درج شده است.
نادرست_ کلینیه_کراتیو برای جریان دستگاه ، باید شناسه مشتری برنامه خود را که می توانید در صفحه تنظیمات برنامه خود پیدا کنید ، عبور دهید. Client_Secret برای جریان دستگاه مورد نیاز نیست.
نادرست_دویس_ کد دستگاه_کد ارائه شده معتبر نیست.
دسترسی_ هنگامی که یک کاربر در طی فرایند مجوز لغو می کند ، یک خطای Access_Denied دریافت می کنید و کاربر قادر به استفاده مجدد از کد تأیید نیست.
feevel_flow_disabled جریان دستگاه در تنظیمات برنامه فعال نشده است. برای اطلاعات بیشتر ، به "جریان دستگاه" مراجعه کنید.

جریان برنامه غیر وب

احراز هویت غیر WEB برای موقعیت های محدود مانند آزمایش در دسترس است. در صورت نیاز ، می توانید از تأیید اعتبار اصلی برای ایجاد یک نشانه دسترسی شخصی با استفاده از صفحه تنظیمات Tokens Access شخصی خود استفاده کنید. این تکنیک کاربر را قادر می سازد در هر زمان دسترسی را لغو کند.

پارامتر redirect_uri اختیاری است. در صورت ترک ، GitHub کاربران را به URL پاسخ به تماس تنظیم شده در تنظیمات برنامه OAUTH هدایت می کند. در صورت ارائه ، میزبان URL تغییر مسیر (به استثنای زیر دامنه ها) و پورت دقیقاً باید با URL پاسخ به تماس مطابقت داشته باشند. مسیر URL تغییر مسیر باید به زیر مجموعه URL پاسخ به تماس مراجعه کند.

تماس تلفنی: http://example. com/path خوب: http://example. com/path خوب: http://example. com/path/subdir/Other Good: http://oauth. example. com/pathخوب: http://oauth. example. com/path/subdir/Other Bad: http://example. com/bar bad: http://example. com/ بد: http://example. com:8080/مسیر بد: http://oauth. example. com:8080/Path Bad: http://example. org 

URL های تغییر مسیر Loopback

پارامتر redirect_uri اختیاری نیز می تواند برای URL های حلقه ای استفاده شود. اگر برنامه یک URL Loopback و یک درگاه را مشخص کند ، پس از اجازه دادن به برنامه کاربران به URL و درگاه ارائه شده هدایت می شوند. redirect_uri نیازی به مطابقت با درگاه مشخص شده در URL پاسخ به برنامه برای برنامه ندارد.

برای http://127. 0. 0. 0. 1/path URL پاسخ به تماس ، می توانید از این redirect_uri استفاده کنید:

http://127. 0. 0. 1:1234/Path 

توجه داشته باشید که OAUTH RFC توصیه می کند از LocalHost استفاده نکنید ، بلکه در عوض از Loopback Literal 127. 0. 0. 1 یا IPv6 :: 1 استفاده کنید.

ایجاد چندین نشانه برای برنامه های OAUTH

می توانید چندین نشانه برای یک ترکیب کاربر/برنامه/دامنه ایجاد کنید تا نشانه هایی برای موارد استفاده خاص ایجاد کنید.

این مفید است اگر برنامه OAuth شما از یک گردش کار پشتیبانی کند که از GitHub برای ورود به سیستم استفاده می کند و فقط به اطلاعات اصلی کاربر نیاز دارد. گردش کار دیگر ممکن است نیاز به دسترسی به مخازن خصوصی کاربر داشته باشد. با استفاده از چندین نشانه ، برنامه OAUTH شما می تواند جریان وب را برای هر مورد استفاده انجام دهد و فقط از دامنه های مورد نیاز درخواست می کند. اگر کاربر فقط از برنامه شما برای ورود به سیستم استفاده می کند ، هرگز نیازی به دسترسی برنامه OAUTH شما به مخازن خصوصی خود نیست.

محدودیتی از ده نشانه وجود دارد که برای هر کاربر/برنامه/دامنه صادر می شود. اگر یک برنامه بیش از 10 توکن برای همان کاربر و همان دامنه ها ایجاد کند ، قدیمی ترین نشانه ها با همان ترکیب کاربر/برنامه/دامنه ابطال می شوند.

هشدار: ابطال تمام مجوزهای یک برنامه OAUTH ، کلیدهای SSH را که برنامه تولید شده از طرف کاربر ، از جمله کلیدهای استقرار ایجاد شده است ، حذف می کند.

کاربران را برای بررسی دسترسی خود هدایت می کند

شما می توانید به اطلاعات مجوز برای یک برنامه OAuth پیوند دهید تا کاربران بتوانند مجوزهای برنامه خود را مرور و لغو کنند.

برای ساخت این لینک ، به برنامه های OAuth Client_id که هنگام ثبت نام از GitHub دریافت کرده اید ، نیاز دارید.

https://github. com/settings/coections/applications/:client_id 

نکته: برای کسب اطلاعات بیشتر در مورد منابعی که برنامه OAuth شما می تواند برای کاربر به آن دسترسی پیدا کند ، به "کشف منابع برای کاربر" مراجعه کنید.

  • "خطاهای درخواست مجوز عیب یابی"
  • "عیب یابی برنامه OAUTH APP ACCESS ACCESS ACCESS AREAK"
  • "خطاهای جریان دستگاه"
  • "انقضاء و ابطال توکن"
کتاب آموزش بورس...
ما را در سایت کتاب آموزش بورس دنبال می کنید

برچسب : نویسنده : محمود استادمحمد بازدید : 30 تاريخ : يکشنبه 1 مرداد 1402 ساعت: 16:55