このチュートリアルでは、Resource Owner Password Flow を使用して独自の API を呼び出す方法を説明します。このフローの仕組みや、これを使用すべき理由については、Resource Owner Password Flow を参照してください。
前提条件
-
Auth0 にアプリケーションを登録する.
- アプリケーションの種類 として Regular Web Apps を選択します。
- Allowed Callback URL に
{https://yourApp/callback}を追加します。このフィールドは空欄にできません。空欄のままだとエラーメッセージが返されます。 - アプリケーションの グラントタイプ に パスワード が含まれていることを確認します。設定方法については、グラントタイプを更新する を参照してください。
- アプリケーションでリフレッシュトークンを使用できるようにするには、アプリケーションの グラントタイプ に リフレッシュトークン が含まれていることを確認します。設定方法については、グラントタイプを更新する を参照してください。リフレッシュトークンの詳細については、リフレッシュトークン を参照してください。
-
Auth0 に API を登録する
- 以前のトークンの有効期限が切れたときに API が新しいトークンを取得できるよう、API でリフレッシュトークンを受け取れるようにする場合は、オフラインアクセスの許可 を有効にします。
-
接続を設定する
- 接続がユーザー名とパスワードでユーザーを認証できることを確認します (たとえば、データベース接続 や、AD/LDAP、ADFS、または Azure Active Directory の エンタープライズ接続) 。
-
特定の接続にのみ影響するように、ルール を更新または無効化します。Password Owner Resource Grant のテスト中に
access_deniedエラーが発生した場合は、アクセス制御ルールが原因の可能性があります。
手順
- テナントを設定する:テナントのデフォルト接続を設定します。
- トークンをリクエストする: 認可コードをトークンに交換します。
- API を呼び出す: 取得したアクセストークンを使用して API を呼び出します。
- リフレッシュトークン: 既存のトークンの有効期限が切れたら、リフレッシュトークンを使用して新しいトークンをリクエストします。
テナントを設定する
- Auth0 Dashboard > Tenant Settings に移動し、下にスクロールして Default Directory 設定を探します。
- 使用する接続の名前を入力します。その接続が、ユーザー名とパスワードでユーザーを認証できることを確認してください。
トークンをリクエストする
POST する必要があります。
トークン URL に POST する例
パラメータ
レスポンス
access_token、refresh_token、id_token、token_type、expires_in の各値を含むペイロードを持つ HTTP 200 レスポンスが返されます:
Resource Owner Password フローと標準スコープ
パスワードを提供すると完全なアクセス権が与えられるため、パスワードベースのあらゆるやり取りで、すべてのスコープへのアクセスが付与されます。たとえば、リクエストにAPI スコープを含めない場合、すべての API スコープがアクセストークンに含まれます。同様に、リクエストに
openid スコープのみを含めた場合は、openid の標準OpenID Connect スコープがすべて返されます。これらのケースでは、レスポンスに scope パラメーターが含まれ、発行されたスコープが一覧表示されます。ID トークンなしでユーザー情報を取得する
ユーザー情報が必要な場合は、リクエストに
openid スコープを含めてください。API が署名アルゴリズムとして RS256 を使用している場合、アクセストークンには有効な audience として /userinfo が含まれます。つまり、そのアクセストークンを使用して /userinfo endpoint を呼び出し、ユーザーのクレームを取得できます。API を呼び出す
リフレッシュトークン
- APIでオフラインアクセスの許可を有効にした
- authorize endpointを通じてAuthentication Requestを開始する際に、
offline_accessスコープを含めた
grant_type=refresh_tokenを使用して、Authentication APIの/oauth/tokenエンドポイントにPOSTリクエストを送信します。
トークン URL に POST する例
パラメーター
レスポンス
access_token、その有効期間 (秒単位の expires_in) 、付与された scope の値、token_type を含むペイロードとともに、HTTP 200 レスポンスが返されます。
使用例
トークンをカスタマイズする
レルムのサポートを設定する
grant_typeリクエストパラメーターをhttp://auth0.com/oauth/grant-type/password-realmに設定します。realmという追加のリクエストパラメーターを送信し、ユーザーが属するレルムの名前を設定します。たとえば、社内従業員向けにemployeesという名前のデータベース接続を設定しており、ユーザーがその接続に属している場合は、realmをemployeesに設定します。
レルムとしての接続
アクティブ認証をサポートする接続であれば、データベース接続、パスワードレス接続、AD/LDAP、ADFS、Azure Active Directory のエンタープライズ接続を含め、レルムとして設定できます。