سرفصل‌های آموزشی
آموزش OAuth و Laravel Passport
Password Grant

Password Grant

نوع دیگری از Grant به نام Password Grant می‌باشد که راهی برای مبادله اعتبارنامه (credential) کاربر برای یک access token است. از آنجا که client باید رمز عبور کاربر را جمع‌آوری کرده و آن را به authorization server ارسال کند، استفاده از این Grant توصیه نمی‌شود چون در این روش کاربر اطلاعات خود (نام کاربری و رمز عبور) را در مرورگر سمت Client وارد می‌کند نه در سرور احراز هویت یا authorization server. اما این اطلاعات به سرور احراز هویت تعلق دارد و نباید در اختیار کلاینت قرار گیرد. ممکن است صفحه کلاینت جعلی باشد و رمز عبور کاربر را در سرور اصلی تغییر دهد.

این Grant، مکانیزمی را برای مواردی مانند تایید اعتبار چند فاکتوری فراهم نمی‌کند، بنابراین در عمل کاملا محدود است. همچنین در آخرین نسخه OAuth 2.0 Security Best Current Practice ذکر شده است که این روند به طور کامل مجاز نیست.

·         grant_type : پارامتر ضروری است که نوع مجوز را مشخص می‌کند و در این حالت مقداری برابر با password دارد.

·         username : ضروری است و نام کاربری کاربر می‌باشد.

·         password : ضروری است و گذرواژه کاربر را در برمی‌گیرد

·         Client Authentication : شامل client_id  و  client_secret می‌باشد و در صورتی ضروری است که کلاینت قبلا این موارد را دریافت کرده باشد. البته این موارد می‌توانند به جای این که در درخواست قرار بگیرند در HTTP Basic auth header باشند.

کد زیر نمونه‌ای از درخواست کلاینت به Authorization Server می‌باشد :

POST /oauth/token HTTP/1.1
Host: authorization-server.com
 
grant_type=password
&username=user@example.com
&password=1234luggage
&client_id=xxxxxxxxxx
&client_secret=xxxxxxxxxx

پاسخی که از Authorization Server به کلاینت برگردانده می‌شود، اگر موفق باشد شامل Access Token می‌باشد که بسیار شبیه روش های قبلی است.

online-support-icon