はじめに
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 は OP から受け取ったユーザー属性情報を長期間保持することはありません。
- 認可 EP や UserInfo EP から提供する場合には、レスポンスを返却後、すぐにメモリ上から削除されます。
- トークン EP から提供する場合には、認可コードの有効期限が切れてクリーンアップ処理が実行された段階で、データベース内から削除されます。
- 一時的かつ暗号化されているとしても Authlete のデータベースにユーザー属性情報を格納することが許容できない場合には、認可 EP もしくは Userinfo EP を用いることになります。
-
もしさらに厳しい要件があり、Authlete API にユーザー属性情報を渡すことも許されない場合には、以下をご検討ください。
-
UserInfo EP からユーザー属性情報を提供する際に、Authlete にはアクセストークンの解析のみを依頼し、レスポンス自体は OP にて生成する。 具体的には、UserInfo リクエストを受け取った OP は以下の処理を行う。
- /auth/userinfo API を呼び出してリライングパーティが求めているユーザー属性情報を把握する。
- 次に、/auth/userinfo/issue
API を利用せずに、仕様
に従いレスポンスを生成する。\

- Authlete のオンプレミス向けパッケージ を導入し、お客さまにて運用する。
-
UserInfo EP からユーザー属性情報を提供する際に、Authlete にはアクセストークンの解析のみを依頼し、レスポンス自体は OP にて生成する。 具体的には、UserInfo リクエストを受け取った OP は以下の処理を行う。
- また別の観点として、運用上の要件からインプリシットフローのサポートや UserInfo EP の提供が望ましくない場合には、認可コードを用いて、かつトークン EP から ID トークンとして、ユーザー属性情報を返却する方式を選ぶことになります。
補足情報
- OAuth 2.0 / OIDC 実装の新アーキテクチャー