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

はじめに


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
処理の概要
認証リクエストを受けた 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 を利用する

  


Providing ID Token from Token EP


Providing ID Token from Authorization EP


Providing response from Userinfo EP

方式選択の考えかた


  • 基本的に、Authlete は OP から受け取ったユーザー属性情報を長期間保持することはありません。
    • 認可 EP や UserInfo EP から提供する場合には、レスポンスを返却後、すぐにメモリ上から削除されます。
    • トークン EP から提供する場合には、認可コードの有効期限が切れてクリーンアップ処理が実行された段階で、データベース内から削除されます。
  • 一時的かつ暗号化されているとしても Authlete のデータベースにユーザー属性情報を格納することが許容できない場合には、認可 EP もしくは Userinfo EP を用いることになります。
  • もしさらに厳しい要件があり、Authlete API にユーザー属性情報を渡すことも許されない場合には、以下をご検討ください。
    • UserInfo EP からユーザー属性情報を提供する際に、Authlete にはアクセストークンの解析のみを依頼し、レスポンス自体は OP にて生成する。 具体的には、UserInfo リクエストを受け取った OP は以下の処理を行う。
    • Authlete のオンプレミス向けパッケージを導入し、お客さまにて運用する。
  • また別の観点として、運用上の要件からインプリシットフローのサポートや UserInfo EP の提供が望ましくない場合には、認可コードを用いて、かつトークン EP から ID トークンとして、ユーザー属性情報を返却する方式を選ぶことになります。

補足情報


How did we do with this article?