Table of Contents
Authlete を用いて OpenID Connect 仕様に従いユーザー属性情報を提供するには、アイデンティティ・プロバイダー (OpenID Provider; OP) がその情報をどのように取り扱うかを考慮し、ID トークンを用いる場合にはどのエンドポイントから返却するか、あるいは ID トークンではなく UserInfo エンドポイントを用いるかを選択します。
Authlete はユーザー属性情報の提供方式として以下の 3 つをサポートします。
※ EP: エンドポイント
提供方式 | トークン EP から ID トークンとして提供 | 認可 EP から ID トークンとして提供 | Userinfo EP からレスポンスとして提供 |
---|---|---|---|
認可リクエストのパラメーター | response_type に code、scope に openid を含む | response_type に id_token を含む | N/A |
Authlete API | /auth/authorization/issue | /auth/authorization/issue | /auth/userinfo/issue |
処理の概要 | 認証リクエストを受けた OP は、Authlete に対し、パラメーターのひとつとしてユーザー情報を含めて、レスポンス生成を依頼する。Authlete は認可コード生成と同時に、受け取ったユーザー属性を含む ID トークンを生成し保管する。そしてトークン EP において、認可コードと引き換えに ID トークンを返却する | 認証リクエストを受けた OP は、Authlete に対し、パラメーターのひとつとしてユーザー情報を含めて、レスポンス生成を依頼する。Authlete は受け取ったユーザー属性を含む ID トークンを生成し返却する | UserInfo リクエストを受けた OP は、Authlete に対し、パラメーターのひとつとしてユーザー情報を含めて、レスポンス生成を依頼する。Authlete は受け取ったユーザー属性を含むレスポンスを生成し返却する |
ユーザー属性の保持の有無 | 有。Authlete はユーザー属性を含む ID トークンを暗号化し、一時的にデータベースに格納する。ID トークンは有効期限切れの認可コードがクリーンアップされるまで保持される | 無。Authlete はユーザー属性を保持しない | 無。Authlete はユーザー属性を保持しない |
OP の構成 | 認可 EP とトークン EP を実装。それぞれのバックエンドとして Authlete を利用する | 認可 EP を実装。バックエンドとして Authlete を利用する | 左記の EP に加えて Userinfo EP を実装。バックエンドとして Authlete を利用する |
一時的かつ暗号化されているとしても Authlete のデータベースにユーザー属性情報を格納することが許容できない場合 には、認可 EP もしくは Userinfo EP を用いることになります。
もしさらに厳しい要件があり、Authlete API にユーザー属性情報を渡すことも許されない場合 には、以下をご検討ください。
UserInfo EP からユーザー属性情報を提供する際に、Authlete にはアクセストークンの解析のみを依頼し、レスポンス自体は OP にて生成する。 具体的には、UserInfo リクエストを受け取った OP は以下の処理を行う。
Authlete のオンプレミス向けパッケージ を導入し、お客さまにて運用する。
また別の観点として、運用上の要件からインプリシットフローのサポートや UserInfo EP の提供が望ましくない場合 には、認可コードを用いて、かつトークン EP から ID トークンとして、ユーザー属性情報を返却する方式を選ぶことになります。
OAuth 2.0 / OIDC 実装の新アーキテクチャー