ユーザー属性情報の提供方式と、各方式における Authlete の処理方法

はじめに


Authlete を用いて OpenID Connect 仕様に従いユーザー属性情報を提供するには、アイデンティティ・プロバイダーがその情報をどのように取り扱うかを考慮し、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
処理の概要
認可リクエストを受けた認可サーバーは、Authlete に対し、パラメーターのひとつとしてユーザー情報を含めて、レスポンス生成を依頼する。
Authlete は認可コード生成と同時に、受け取ったユーザー属性を含む ID トークンを生成し保管する。そしてトークン EP において、認可コードと引き換えに ID トークンを返却する
認可リクエストを受けた認可サーバーは、Authlete に対し、パラメーターのひとつとしてユーザー情報を含めて、レスポンス生成を依頼する。
Authlete は受け取ったユーザー属性を含む ID トークンを生成し返却する
Userinfo リクエストを受けた認可サーバーは、Authlete に対し、パラメーターのひとつとしてユーザー情報を含めて、レスポンス生成を依頼する。
Authlete は受け取ったユーザー属性を含むレスポンスを生成し返却する
ユーザー属性の保持の有無
有。Authlete はユーザー属性を含む ID トークンを暗号化し、一時的にデータベースに格納する。ID トークンは有効期限切れの認可コードがクリーンアップされるまで保持される
無。Authlete はユーザー属性を保持しない
無。Authlete はユーザー属性を保持しない
認可サーバーの構成
認可 EP とトークン EP を実装。それぞれのバックエンドとして Authlete を利用する
認可 EP を実装。バックエンドとして Authlete を利用する
左記の EP に加えて Userinfo EP を実装。バックエンドとして Authlete を利用する

  


Providing ID Token from Token EP


Providing ID Token from Authorization EP


Providing response from Userinfo EP



方式選択の考えかた


基本的に、Authlete は認可サーバーから受け取ったユーザー属性情報を長期間保持することはありません。認可 EP や Userinfo EP から提供する場合にはレスポンスを返却後すぐにメモリ上から、トークン EP から提供する場合には認可コードの有効期限が切れてクリーンアップ処理が実行された段階でデータベース内から、それぞれ削除されます。

セキュリティ要件上、一時的かつ暗号化されているとしても Authlete のデータベースにユーザー属性情報を格納することが許容できない場合には、認可 EP もしくは Userinfo EP を用いることになります。もしさらに厳しい要件があり、Authlete API にユーザー属性情報を渡すことも許されないという場合には、Authlete のオンプレミス向けパッケージ導入をご検討ください。

また別の観点として、運用上の要件からインプリシットフローのサポートや Userinfo EP の提供が望ましくない場合には、認可コードを用いて、かつトークン EP から ID トークンとしてユーザー属性情報を返却する方式を選ぶことになります。

補足情報


How did we do with this article?