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

ユーザー属性情報の提供方式と、各方式における 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 /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 を利用する  
user-attributes-2_ja
Providing ID Token from Token EP
user-attributes-1_ja
Providing ID Token from Authorization EP
user-attributes-3_ja
Providing response from Userinfo EP

方式選択の考えかた

  • 基本的に、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 を利用せずに、仕様 に従いレスポンスを生成する。
        user-attributes-4_ja
    • Authlete のオンプレミス向けパッケージ を導入し、お客さまにて運用する。

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


補足情報