「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>OpenID Connect]]

* 目次 [#m79145b4]
#contents

*概要 [#l856c539]
-Final: OpenID Connect Core 1.0 incorporating errata set 1 > 5.1.  Standard Claims~
http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims

*詳細 [#l0458704]
**Standard Claims [#s651443b]

|項番|>|グループ名|意味|h
|~||クレーム名|~|h
|1|>|sub|ユーザーの一意識別子|
|2|>|profile|プロフィール|
|2-1|・|name|フルネーム|
|2-2|・|given_name|名|
|2-3|・|family_name|姓|
|2-4|・|middle_name|ミドルネーム|
|2-5|・|nickname|ニックネーム|
|2-6|・|preferred_username|好みのユーザー名|
|2-7|・|profile|プロフィールページの URL|
|2-8|・|picture|プロフィール画像の URL|
|2-9|・|website|Web サイトやブログの URL|
|2-10|・|gender|性別。female と male が定義済み。|
|2-11|・|birthdate|誕生日。YYYY-MM-DD。|
|2-12|・|zoneinfo|タイムゾーン。Europe/Paris など。|
|2-13|・|locale|ロケール。en-US など。|
|2-14|・|updated_at|情報最終更新日。Unix エポックからの経過秒数。|
|3|>|email|電子メール|
|3-1|・|email|電子メールアドレス|
|3-2|・|email_verified|電子メールアドレスが検証済みか否かの真偽値|
|4|>|phone|電話|
|4-1|・|phone_number|電話番号|
|4-2|・|phone_number_verified|電話番号が検証済みか否かの真偽値|
|5|>|address|住所 JSON object。書式は「5.1.1. Address Claim」に記載。|
|5-1|・|formatted|フォーマットされたフルメールアドレス、表示用・郵送用に使用|
|5-2|・|street_address|通り・番地、号室、私書箱、複数行の拡張された住所情報。|
|5-3|・|locality|City or locality|
|5-4|・|region|State, province, prefecture, or region.|
|5-5|・|postal_code|Zip code or postal code|
|5-6|・|country|Country name|

**多言語化 [#s7555a0f]
-クレームによっては多言語化可能
-クレーム名に続いて"#ja-Kana-JP"などの言語タグを付与する。

*ユーザー属性クレーム群の格納要求 [#ge95ed15]

**scope値による格納要求 [#r635a586]
scope値によってユーザー属性クレーム群の格納要求を行うことができる。

-Final: OpenID Connect Core 1.0 incorporating errata set 1 >~
5.4. Requesting Claims using Scope Values~
http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims

***グループ名 [#ld50fab0]
[[前述のグループ名>#c71c8ad5]](profile, email, phone, address)をscope値に指定可能。

***格納部位 [#w881150b]
-UserInfoエンドポイントからUserInfoレスポンス(JSON オブジェクト)として返される.

-response_type 値が id_token の場合、
--この場合、Access Token が発行されない。
--ユーザー属性クレーム群はID Token で返却される。

**クレーム要求JSONによる格納要求 [#ted4d56f]
-クレームをリスト化したJSON オブジェクトを使用して特定のクレームの返却を要求する。
--[[ユーザー属性クレーム群>#kb7212b1]]に含まれていない Claim を要求する唯一の方法。
--scope 値では指定することが出来ない[[ユーザー属性クレーム群>#kb7212b1]]の特定の組み合わせを要求する唯一の方法。

-Final: OpenID Connect Core 1.0 incorporating errata set 1 >~
5.5. Requesting Claims using the "claims" Request Parameter~
https://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html#ClaimsParameter

***トップレベルメンバ [#sd976f50]
-userinfoメンバ
--OPTIONAL.
--UserInfoエンドポイントへ返却を要求する個々のクレームのリスト。

--当メンバが存在した場合、
---scope 値で要求されたクレームに加え、
---当メンバでリストされたクレームも返却される。

--当メンバーが存在しなかった場合、
---scope 値で要求されたクレームのみが返却される。
---userinfoメンバを指定する際は、UserInfo Endpoint を使用するために、~
response_type に対し, Access Token を Client に発行するタイプの値を指定しなければならない。

-id_tokenメンバ
--OPTIONAL.
--[[ID トークン>#ofb73c59]]内に格納して返却を要求する個々のクレームのリストを示す。

--当メンバーが存在した場合、
---デフォルトのクレームに加え
---当メンバーでリストされたクレームも返却される。

--当メンバーが存在しなかった場合、
---デフォルトのクレームのみが返却される。

***クレーム要求JSONの例 [#o47b5480]
クレーム要求JSONの例を以下に示す:
  {
   "userinfo":
    {
     "given_name": {"essential": true},
     "nickname": null,
     "email": {"essential": true},
     "email_verified": {"essential": true},
     "picture": null,
     "http://example.info/claims/groups": null
    },
   "id_token":
    {
     "auth_time": {"essential": true},
     "acr": {"values": ["urn:mace:incommon:iap:silver"] }
    }
  }

*ユーザー情報エンドポイント [#hcad25c0]
-Final: OpenID Connect Core 1.0 incorporating errata set 1 > 5.3. UserInfo Endpoint~
http://openid.net/specs/openid-connect-core-1_0.html#UserInfo

**概要 [#ba609a89]
-OAuth 2.0のResource ServerのWebAPI
-HTTP的には、HTTPS必須

***リクエスト [#h2d67388]
-HTTP の GET と POST メソッドをサポートする。

-UserInfoリクエストの一例を示す:
 GET /userinfo HTTP/1.1
 Host: server.exampletechinfoofmicrosofttech.osscons.jp
 Authorization: Bearer ・・・・・

***レスポンス [#ldfdb713]
-UserInfoレスポンスは JSON オブジェクトとして返される。
--UserInfoクレームは JSON オブジェクトのメンバーとして返される。
--UserInfoレスポンスのクレームセットには、必ず sub (subject) クレームを含める。
--[[ユーザー属性クレーム群>#kb7212b1]]に加え、そこに明記されていないクレームも返却可能。
--Idp(OP)は要求された クレームの値を、必ずしも返さなくてもよい。
--クレームが返されない場合、null や空文字列ではなく、JSON オブジェクトのメンバーから除かれるべき。

-JWTによる署名 or 暗号化、若しくは、署名 and 暗号化を行う場合
--Claim は JWT で返されるため、Content-Type は application/jwtとする。
--署名する場合、subに加え、iss (issuer) Claim と aud (audience) Claim を含むべき。
--署名と暗号化の両方が要求された場合、レスポンスは [[JWT]] で定義されているように、~
結果はネストされた [[JWT]] となり、 署名した後に暗号化しなければならない。

-以下に UserInfoレスポンスの一例を示す:
  HTTP/1.1 200 OK
  Content-Type: application/json
  {
    "sub": "ユーザID 的 な情報",
    "name": "Jane Doe",
    "given_name": "Jane",
    "family_name": "Doe",
    "preferred_username": "j.doe",
    "email": "janedoe@techinfoofmicrosofttech.osscons.jp",
    "picture": "http://techinfoofmicrosofttech.osscons.jp/janedoe/me.jpg"
  }

-クライアントによるUserInfoレスポンスの検証
--TLS サーバー証明書チェックを通じてIdp(OP)を検証する。
--UserInfoレスポンスが[[JWT]]の場合、署名検証や復号化を行う。
--[[ID トークン>#ofb73c59]]とUserInfoクレームのsubが一致することを検証する必要がある。

**[[Discovery、Dynamic Client Registration>#h5793a09]]との関連 [#z8f0be39]
-この仕様は、[[Discovery、Dynamic Client Registration>#h5793a09]]と関係がある。

-設定によって、
--[[ID トークン>#ofb73c59]]相当の情報が、
--[[JWT]] 形式もしくは [[JSON]] 形式で返される。
--設定によって、[[JWT]]の署名アルゴリズムも影響を受ける。

*参考 [#d876255d]

----
Tags: [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS