マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Finalを参照して記述。

  • Client(RP)がメールアドレスやURLからユーザが利用しているIdp/STS(OP)を特定する方法

詳細

TLSサポートと、TLS証明書のチェックが必要。

OPディスカバリ

パラメタ

  • Resource
    • エンドユーザの識別子。
    • 必要に応じて正規化が行われる。
    • 以下のエンドユーザの識別子がある。
      • メアド
      • URL
      • ホスト名とポート
  • Host
    Simple Web Discoveryサービスがホストされているサーバ

リクエスト・レスポンスの例

  • 共通項
  • host
    • example.com
    • 若しくは、Resource中のhost部分
  • リクエスト
  • メアド
    • value : joe@example.com
    • resource: acct:joe@example.com
       GET /.well-known/webfinger
         ?resource=acct%3Ajoe%40example.com
         &rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer
         HTTP/1.1
       Host: example.com
  • ホスト名とポート
    • value : example.com:8080
    • resource: https://example.com:8080/
       GET /.well-known/webfinger
         ?resource=https%3A%2F%2Fexample.com%3A8080%2F
         &rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer
         HTTP/1.1
       Host: example.com:8080
  • レスポンス
     HTTP/1.1 200 OK
     Content-Type: application/jrd+json
     {
      "subject": "xxxxxx", ---> ココに要求したResourceの値が入る。
      "links":
       [
        {
         "rel": "http://openid.net/specs/connect/1.0/issuer",
         "href": "https://server.example.com"
        }
       ]
     }

OP構成情報

issuerに「/.well-known/openid-configuration」を連結したURLを使用。

要求

GET /.well-known/openid-configuration HTTP/1.1
Host: example.com

応答

 HTTP/1.1 200 OK
 Content-Type: application/json
 {
  "issuer":
    "https://server.example.com",
  "authorization_endpoint":
    "https://server.example.com/connect/authorize",
  "token_endpoint":
    "https://server.example.com/connect/token",
  "token_endpoint_auth_methods_supported":
    ["client_secret_basic", "private_key_jwt"],
  "token_endpoint_auth_signing_alg_values_supported":
    ["RS256", "ES256"],
  "userinfo_endpoint":
    "https://server.example.com/connect/userinfo",
  "check_session_iframe":
    "https://server.example.com/connect/check_session",
  "end_session_endpoint":
    "https://server.example.com/connect/end_session",
  "jwks_uri":
    "https://server.example.com/jwks.json",
  "registration_endpoint":
    "https://server.example.com/connect/register",
  "scopes_supported":
    ["openid", "profile", "email", "address",
     "phone", "offline_access"],
  "response_types_supported":
    ["code", "code id_token", "id_token", "token id_token"],
  "acr_values_supported":
    ["urn:mace:incommon:iap:silver",
     "urn:mace:incommon:iap:bronze"],
  "subject_types_supported":
    ["public", "pairwise"],
  "userinfo_signing_alg_values_supported":
    ["RS256", "ES256", "HS256"],
  "userinfo_encryption_alg_values_supported":
    ["RSA1_5", "A128KW"],
  "userinfo_encryption_enc_values_supported":
    ["A128CBC-HS256", "A128GCM"],
  "id_token_signing_alg_values_supported":
    ["RS256", "ES256", "HS256"],
  "id_token_encryption_alg_values_supported":
    ["RSA1_5", "A128KW"],
  "id_token_encryption_enc_values_supported":
    ["A128CBC-HS256", "A128GCM"],
  "request_object_signing_alg_values_supported":
    ["none", "RS256", "ES256"],
  "display_values_supported":
    ["page", "popup"],
  "claim_types_supported":
    ["normal", "distributed"],
  "claims_supported":
    ["sub", "iss", "auth_time", "acr",
     "name", "given_name", "family_name", "nickname",
     "profile", "picture", "website",
     "email", "email_verified", "locale", "zoneinfo",
     "http://example.info/claims/groups"],
  "claims_parameter_supported":
    true,
  "service_documentation":
    "http://server.example.com/connect/service_documentation.html",
  "ui_locales_supported":
    ["en-US", "en-GB", "en-CA", "fr-FR", "fr-CA"]
 }

パラメタ

  • 追加のパラメタを定義可能
  • Session Managementなど、他の仕様で定義されているものもある。

基本要素

  • issuer (REQUIRED)
    • WebFinger?から返されるissuerの値(href)と同じ
    • QueryやFragmentのComponentを含まないhttpsスキームのURL
  • op_policy_uri (OPTIONAL)
    Clientをに登録する人に向けてOPの要求事項を提供するURL。
  • op_tos_uri (OPTIONAL)
    Clientをに登録する人に向けてOPの利用規約を提供するURL。

エンドポイント

OAuth 2.0

  • authorization_endpoint (REQUIRED)
    認可エンドポイントのURL
  • token_endpoint (REQUIRED)
    • TokenエンドポイントのURL
    • Implicitのみの場合は割愛可。
  • token_endpoint_auth_methods_supported (OPTIONAL)
    • Tokenエンドポイントでサポートされている認証タイプのリストを含むJSON配列
    • client_secret_basic、client_secret_post、client_secret_jwt、およびprivate_key_jwt

Registration

  • registration_endpoint (RECOMMENDED)
    動的クライアント登録エンドポイントのURL
  • service_documentation (OPTIONAL)
    • 開発者向け情報ページのURL。
    • Dynamic Client Registrationをサポートしていない場合

Session Management

  • refresh_session_endpoint
    リフレッシュ・セッション・エンドポイントのURL
  • end_session_endpoint
    エンド・セッション・エンドポイントのURL

署名・暗号化

JWK

Requestオブジェクト関連

  • requestパラメタ
    • request_parameter_supported (OPTIONAL)
      • requestパラメタのサポート
      • 既定値はfalse
  • request_uriパラメタ
    • request_uri_parameter_supported (OPTIONAL)
      • request_uriパラメタのサポート
      • 既定値はfalse
    • require_request_uri_registration (OPTIONAL)
      • request_uri事前登録の要否
      • 既定値はfalse

アルゴリズム

JWSJWEのアルゴリズム(JWA)のリストを含むJSON配列

  • Tokenエンドポイント
    private_key_jwtとclient_secret_jwt認証メソッド用
  • token_endpoint_auth_signing_alg_values_supported (OPTIONAL)
    • JWS署名アルゴリズム(alg値)
    • RS256をサポートしなければならない(noneはダメ)。
  • id_token_signing_alg_values_supported (REQUIRED)
    • JWS署名アルゴリズム(alg値)
    • RS256をサポートしなければならない(noneはダメ)。
  • id_token_encryption_alg_values_supported (OPTIONAL)
    JWE暗号化アルゴリズム(alg値)
  • id_token_encryption_enc_values_supported (OPTIONAL)
    JWE暗号化アルゴリズム(enc値)
  • userinfo_signing_alg_values_supported (OPTIONAL)
    • JWS署名アルゴリズム(alg値)
    • noneを含めることができる。
  • userinfo_encryption_alg_values_supported (OPTIONAL)
    JWE暗号化アルゴリズム(alg値)
  • userinfo_encryption_enc_values_supported (OPTIONAL)
    JWE暗号化アルゴリズム(enc値)
  • request_object_signing_alg_values_supported (OPTIONAL)
    • JWS署名アルゴリズム(alg値)
    • noneとRS256をサポートしなければならない。
  • request_object_encryption_alg_values_supported (OPTIONAL)
    JWE暗号化アルゴリズム(alg値)
  • request_object_encryption_enc_values_supported (OPTIONAL)
    JWE暗号化アルゴリズム(enc値)

各種オプション

OAuth 2.0 / OIDC

  • response_types_supported (REQUIRED)
    サポートするresponse_type値のリストを含むJSON配列
  • scopes_supported (RECOMMENDED)
    サポートするscope値のリストを含むJSON配列
  • response_modes_supported (OPTIONAL)
    • サポートするresponse_mode値 のJSON配列
    • 既定値は["query"、 "fragment"]
  • grant_types_supported (OPTIONAL)
    • サポートするgrant_type値 のJSON配列
    • 既定値は["authorization_code"、 "implicit"]

OIDC

  • subject_types_supported (REQUIRED)
    サポートするsubクレームの種類 のJSON配列
    • public(既定値)
    • pairwise
  • claims
    • claims_parameter_supported (OPTIONAL)
      • claimsパラメタのサポート
      • 既定値はfalse
    • claims_supported (RECOMMENDED)
      クレーム名のリストを含むJSON配列
  • acr_values_supported (OPTIONAL)
    サポートする認証コンテキストクラス参照のリストを含む
  • その他
    • display_values_supported (OPTIONAL)
    • claim_types_supported (OPTIONAL)
    • ロケール
      • claims_locales_supported (OPTIONAL)
      • ui_locales_supported (OPTIONAL)

参考

Dynamic Client Registration


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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-16 (火) 18:17:51 (2d)