Hybridフロー
フロー図
フロー説明
1. Discovery
OpenID Configurationエンドポイントにリクエストして各エンドポイントのURIとサポート機能を確認します。
2. ユーザー認証リクエスト
Authorizationエンドポイントにリクエストして認可コードを取得します。
JavaScriptのログインボタンを利用している場合には実装は不要です。
- クライアントはユーザーの認可を得るため、ユーザーをAuthorizationエンドポイントへリダイレクトさせます。
- Authorizationエンドポイントはユーザーを認証して、クライアントがアクセスする権限を与えることについてユーザーに確認をとります。
- ユーザーによる認可が得られた場合、事前に登録された戻り先URLへユーザーをリダイレクトさせ、認可コードと指定されたstateをクライアントに渡します。
- クライアントは認可リクエスト時に送信したstateと渡されたstateが同一かどうか確認します。
3. Access Token/ID Token/Authorization Code抽出
クライアントサイドで利用するためのAccess TokenとID Tokenを、サーバーサイドでAccess Tokenを発行するためのAuthoization Codeを抽出します。
4. ID Token検証
JWKsエンドポイントもしくはPublic KeysエンドポイントにリクエストしてID Token検証に必要な情報を取得し、ID Tokenを検証します。
5. ウェブAPIアクセス
- クライアントはAccess Tokenを使ってウェブAPIのエントリーポイントへリクエストを送信します。
- ウェブAPIはAccess Tokenが有効な場合、正常なレスポンスを返却します。Access Tokenが無効な場合はエラーレスポンスを返却します。
- クライアントは取得したレスポンスをもとに処理を継続します。
6. Access Token要求(発行)
TokenエンドポイントにリクエストしてAccess Token/Refresh Token/ID Tokenを発行します。
7. ID Token検証
JWKsエンドポイントもしくはPublic KeysエンドポイントにリクエストしてID Token検証に必要な情報を取得し、ID Tokenを検証します。
8. ウェブAPIアクセス
- クライアントはAccess Tokenを使ってウェブAPIのエントリーポイントへリクエストを送信します。
- ウェブAPIはAccess Tokenが有効な場合、正常なレスポンスを返却します。Access Tokenが無効な場合はエラーレスポンスを返却します。
- クライアントは取得したレスポンスをもとに処理を継続します。
9. Access Token要求(更新)
TokenエンドポイントにリクエストしてAccess Tokenを更新します。
Access Token要求について
Access Token発行
- クライアントは認可コードを使って、Tokenエンドポイントへリクエストを送信します。この際、事前に発行してあるシークレットでBasic認証を行います。
- Tokenエンドポイントはクライアントを認証し、Access TokenとRefresh Tokenを返却します。要求があった場合はID Tokenも一緒に返却します。ID Tokenに関しましてはこちらをご覧ください。
- クライアントは取得したAccess TokenとRefresh Tokenを後で利用するため安全に保存します。ID連携を行う場合はAccess Tokenと一緒に取得したid_tokenからユーザー識別子を取得するか、UserInfoAPIからユーザー識別子を取得し、ユーザー識別子をキーにRefresh Tokenを保存してください。クライアント独自のIDがある場合は必要に応じてユーザー識別子と独自のIDの関連付け処理を行ってください。
Access Token更新
- Access Tokenの有効期限が切れた場合、クライアントは保存しておいたRefresh Tokenを用いてTokenエンドポイントへリクエストを送信します。この際、事前に発行してあるシークレットでBasic認証を行います。
- Tokenエンドポイントはクライアントを認証し、新しいAccess Tokenを返却します。クライアントから渡されたRefresh Tokenの有効期限が切れていた場合はエラーを返却します。
- クライアントは新しいAccess Tokenを取得し、期限切れのAccess Tokenと置き換えます。Refresh Tokenの期限切れでエラーが返却された場合は、1のフローからやり直して、ユーザーの認可を取り直す必要があります。
Yahoo! ID連携 v2
- Yahoo! ID連携とは
- ガイドラインを確認する
- Yahoo! JAPAN IDを取得する
- Client IDを登録する
- 各種フロー
- Implicitフロー
- Authorization Codeフロー
- Hybridフロー
- ネイティブアプリを開発
- 属性取得API(UserInfoAPI)
- ID Token
- JavaScript SDK
- PHP SDK
- Java SDK
- デザインガイドライン
- APIアクセス実装方法
- Yahoo! ID連携用語集
- FAQ