Device Code
یکی دیگر از Grantهای OAuth 2.0، Device Code میباشد. جریان device برای کلاینتهایی مناسب است که روی دستگاه هایی قرار دارند که مرورگری ندارند یا این که روش ورود اطلاعات در آنها آسان نیست. (به عنوان مثال کنسولهای بازی، تلویزیونها، قاب های عکس و...)، اما کاربر نهایی دسترسی جداگانه ای به user-agent بر روی کامپیوتر یا دستگاه دیگر دارد (به عنوان مثال، کامپیوتر رومیزی، لپتاپ، تلفن هوشمند، تبلت یا موارد دیگر).
به جای آنکه کاربر با user-agent برای دریافت دسترسی، تعاملی داشته باشد، کلاینت به کاربر نهایی اعلام میکند تا از کامپیوتر یا دستگاه دیگری استفاده کند و برای تایید درخواست دسترسی، به Authorization Server متصل شود. از آنجا که کلاینت نمیتواند درخواستهای ورودی را دریافت کند، Authorization Server را بارها و بارها بررسی میکند تا این که کاربر نهایی فرایند تایید را در Authorization Server کامل کند. توجه داشته باشید که جریان Device Code از client secret استفاده نمیکند.
اکنون دستگاه میتواند از این Access Token برای ایجاد درخواستهای API از طرف کاربر استفاده کند.
ممکن است قبل از اتمام ورود به سیستم و تایید درخواست، Authorization Server وضعیتی را برگرداند که نشان میدهد مجوز هنوز در انتظار است به صورت زیر:
HTTP/1.1 400 Bad Request
{
"error": "authorization_pending"
}
ناگفته نماند ممکن است بر اساس شرایط مختلف، شاهد خطاهای دیگری نیز باشیم:
- slow_down : اگر دستگاه خیلی زیاد از حد یا با بازه های کوتاهتر، Authorization Server را بررسی کند.
- access_denied : اگر کاربر نهایی درخواست دسترسی را رد کند.
- expired_token : اگر device code منقضی شده باشد. هرچند کلاینت میتواند درخواست دهد تا کد جدیدی را دریافت کند.
همچنین در نظر داشته باشید در درخواست هایی که از Authorization Server میشود و یا در پاسخهایی که این سرور میدهد همانند سایر روش ها، میتواند پارامتر scope هم وجود داشته باشد که میزان دسترسی را مشخص میکند که در بخشهای آینده به صورت مجزا به این موضوع میپردازیم.