「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
Finalを参照して記述。
- Client(RP)がメールアドレスやURLからユーザが利用しているIdp/STS(OP)を特定する方法
- WebFinger? [RFC7033]を用いる。
- Idp/STS(OP)の特定
- OAuth 2.0 / OIDCエンドポイントの特定
詳細 †
OPディスカバリ †
HTTPSで以下を送信する。
パラメタ †
- Resource
- エンドユーザの識別子。
- 必要に応じて正規化が行われる。
- 以下のエンドユーザの識別子がある。
- Host
Simple Web Discoveryサービスがホストされているサーバ
リクエスト・レスポンスの例 †
- host
- example.com
- 若しくは、Resource中のhost部分
- レスポンス
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
応答 †
{
"issuer":
"https://server.example.com",
"authorization_endpoint":
"https://server.example.com/authorize",
"token_endpoint":
"https://server.example.com/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/userinfo",
"jwks_uri":
"https://server.example.com/jwks.json",
"registration_endpoint":
"https://server.example.com/register",
"scopes_supported":
["openid", "profile", "email", "address",
"phone", "offline_access"],
"response_types_supported":
["code", "code token"],
"service_documentation":
"http://server.example.com/service_documentation.html",
"ui_locales_supported":
["en-US", "en-GB", "en-CA", "fr-FR", "fr-CA"]
}
パラメタ †
基本要素 †
- issuer (REQUIRED)
- WebFinger?から返されるissuerの値(href)と同じ
- QueryやFragmentのComponentを含まないhttpsスキームのURL
エンドポイント †
- 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_endpoint (RECOMMENDED)
動的クライアント登録エンドポイントのURL
- service_documentation (OPTIONAL)
- 開発者向け情報ページのURL。
- Dynamic Client Registrationをサポートしていない場合
- refresh_session_endpoint
リフレッシュ・セッション・エンドポイントのURL
- end_session_endpoint
エンド・セッション・エンドポイントのURL
署名・暗号化 †
Requestオブジェクト関連 †
- requestパラメタ
- request_parameter_supported
- request_uriパラメタ
- request_uri_parameter_supported
- require_request_uri_registration
アルゴリズム †
JWSとJWEのアルゴリズム(JWA)のリストを含むJSON配列
- IDトークン
- id_token_signing_alg_values_supported (REQUIRED)
- JWS署名アルゴリズム(alg値)のリストを含むJSON配列
- RS256をサポートしなければならない。
- id_token_encryption_alg_values_supported (OPTIONAL)
JWE暗号化アルゴリズム(alg値)のリストを含むJSON配列
- id_token_encryption_enc_values_supported (OPTIONAL)
JWE暗号化アルゴリズム(enc値)のリストを含むJSON配列
- ユーザ情報エンドポイント
- userinfo_signing_alg_values_supported (OPTIONAL)
- JWS署名アルゴリズム(alg値)のリストを含むJSON配列
- noneを含めることができる。
- userinfo_encryption_alg_values_supported (OPTIONAL)
JWE暗号化アルゴリズム(alg値)のリストを含むJSON配列
- userinfo_encryption_enc_values_supported (OPTIONAL)
JWE暗号化アルゴリズム(enc値)のリストを含むJSON配列
- Tokenエンドポイント
private_key_jwtとclient_secret_jwt認証メソッド用
- token_endpoint_auth_signing_alg_values_supported
- JWS署名アルゴリズム(alg値)のリストを含むJSON配列
- RS256をサポートしなければならない(noneはダメ)。
- Requestオブジェクト関連
- request_object_signing_alg_values_supported (OPTIONAL)
- JWS署名アルゴリズム(alg値)のリストを含むJSON配列
- noneとRS256をサポートしなければならない。
- request_object_encryption_alg_values_supported (OPTIONAL)
JWE暗号化アルゴリズム(alg値)のリストを含むJSON配列
- request_object_encryption_enc_values_supported (OPTIONAL)
JWE暗号化アルゴリズム(enc値)のリストを含むJSON配列
各種オプション †
- scopes_supported (RECOMMENDED)
サポートするscope値のリストを含むJSON配列
- response_types_supported (REQUIRED)
サポートするresponse_type値のリストを含むJSON配列
- response_modes_supported (OPTIONAL)
- grant_types_supported (OPTIONAL)
- サポートするgrant_type値 のJSON配列
- 既定値は["authorization_code"、 "implicit"]
- subject_types_supported (REQUIRED)
サポートするsubクレームの種類 のJSON配列
- claims_supported (RECOMMENDED)
- acr_values_supported (OPTIONAL)
サポートする認証コンテキストクラス参照のリストを含む
- その他
- display_values_supported (OPTIONAL)
- claim_types_supported (OPTIONAL)
参考 †
Tags: :IT国際標準, :認証基盤, :クレームベース認証, :OAuth