MS_OIDCAuthenticationContextClassReference - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

OpenID Connect - Authentication Context Class Reference

概要

Final を参照して記述。

  • ACR: Authentication Context Class Reference
    (「認証コンテキスト クラスの参照」的な意味)

    • Authentication Context
      Client が認証に対して要求できる情報。

    • Authentication Context Class
      上記情報(Authentication Context)の集合。

    • Authentication Context Class Reference
      上記(Authentication Context Class)の識別子。

  • クライアントアプリケーションは、ACR を使用して、認証時に
    満たして欲しい(若しくは、満たすべき)認証方法を指定する。

  • FAPI Part 2 (Read and Write API Security Profile) で使用されている。

補足(ACR が解く問題): OpenID Connect
ID トークンは「誰が認証されたか」は伝えるが、
**「どの程度の強さで認証されたか」**は既定では伝わらない。
「送金画面だけは多要素認証を通っていてほしい」といった要求を
クライアントから出せるようにしたのが ACR である。

詳細

識別子

LoA(Level of Assurance)

LoA(Level of Assurance)を参照。

認証方法

  • パスワードで認証される(た)ことを示す。

    urn:oasis:names:tc:SAML:2.0:ac:classes:Password
    
  • X.509 証明書で認証される(た)ことを示す。

    urn:oasis:names:tc:SAML:2.0:ac:classes:X509
    

Authentication Contextを参照。

補足(値は SAML から借りている): 上記のとおり、ACR の値には
SAML 2.0 の Authentication Context Class の URI がそのまま使われる。
OpenID Connect が独自に値を定義しているわけではないため、
「どの値を使うか」は事業者間の取り決め
(またはプロファイル)に依存する。
日本では LoA に対応する値を定めるケースが多い。

要求方法

要求方法の概要

以下、ACR を使用して認証方法を要求し、

結果は、acr クレームで確認できる。

acrクレーム

OpenID Connect - IDトークンacr クレーム)

  • Essential(必須) の場合、指定の ACR を

    • 満たせる場合、acr クレームを返す。
    • 満たせない場合は、エラーを返す。
  • Voluntary(任意) の場合、指定の ACR を

    • 満たせる場合、acr クレームを返さなくていい。
    • 満たせない場合は、acr クレームに現在の認証コンテキストを設定し返すべき。

補足(essential でないと強制にならない): acr_values
Voluntary(任意)としての要求にしかならないため、
OP が要求を無視しても仕様上は違反にならない。
「この認証強度でなければ拒否してほしい」という要求は、
claims パラメタで "essential": true を指定する必要がある。
上の表の対比はこの点を述べている。

要求の例

  • acr_values リクエスト・パラメタ

    • Voluntary クレームとしてリクエスト
    • 配列の場合、scope と同じスペース区切り。
  • claims リクエスト・パラメタ

    • Essential(必須) or Voluntary(任意) を選択してリクエスト
    • JSON を base64url?

移行メモ(補足): 「JSON を base64url?」という疑問については、
claims リクエスト・パラメタは
JSON をそのまま URL エンコードして渡すのが仕様である
(base64url は不要)。
ただし JAR(署名済みリクエスト オブジェクト)に含める場合は、
JWT の一部として base64url エンコードされることになる。

参考

本 Wiki 内


Tags: IT国際標準, 認証基盤, クレームベース認証, OAuth

⚠️ **GitHub.com Fallback** ⚠️