Open棟梁Project - マイクロソフト系技術情報 Wiki

-[[戻る>クレームベース認証#ya3d2a7b]]

* 目次 [#tc83c978]
#contents

*概要 [#bb0360e2]
-OpenID 2.0のプロトコルを引き継ぐことをせず、~
OAuth 2.0を拡張して、OpenID 2.0を置き換えたもの。

-NIST SP 800-63-1で定義されている全ユーザ認証要件(LoA)への対応が可能。~
金融システムや電子政府/行政システムにも利用できることを意味している。

**設計思想 [#s2c1f4d6]
-簡単なことは簡単に
-難しいことも可能に
-モジュラーデザイン

*モジュラーデザイン [#he3af831]
ユースケースに対応するため、
-複数の仕様から成り立っており、
-それらをモジュール的に組み合わせることで

多様な環境をサポートできる。

**仕様一覧 [#ie0f4645]

***[[OAuth]] 2.0に認証結果とプロフィールの受渡し機能を追加 [#c4eeb3ab]
[[OAuth]] 2.0に認証結果とプロフィールの受渡し機能のみを追加した仕様

-Basic Client Profile~
http://openid.net/specs/openid-connect-basic-1_0.html
>OAuth 2.0 Authorization Code Grantを拡張

-Implicit Client Profile~
http://openid.net/specs/openid-connect-implicit-1_0.html
>OAuth 2.0 Implicit Grantを拡張

***OpenID Connectのコアな機能(難しいことも可能に) [#wf00d0d3]
リクエスト内の細かいクレーム指定や認証コンテキストの指定

-Messages~
http://openid.net/specs/openid-connect-messages-1_0.html
>OAuth 2.0に追加で必要となるメッセージの使用

-Standard~
http://openid.net/specs/openid-connect-standard-1_0.html
>Messagesの内容をHTTPに落とし込んだHTTPバインディング仕様

***関連仕様 [#h5793a09]
-Discovery~
http://openid.net/specs/openid-connect-discovery-1_0.html
>メールアドレスやURLからユーザが利用しているOPを特定する方法

-Dynamic Client Registration
-Dynamic Client Registration~
http://openid.net/specs/openid-connect-registration-1_0.html
>動的なRP登録を行う方法

-Session Management~
http://openid.net/specs/openid-connect-session-1_0.html
>OP上でユーザーがログアウトしたときにRP側から検知する方法など、セッション管理の方法

*OpenIDトークン(クレーム) [#ofb73c59]
-以下の値を含むデータをエンコードして署名を付けたもの。
--発行元のOP識別子
--発行先のRP識別子(client_id)
--ユーザー識別子
--発行日時

-仕様全体を通してメッセージ形式にJSONを採用。

-クレームの扱いについて次のような機能を定義している。
--外部クレームの提供
---集約クレーム(Aggregated Claims)
---分散クレーム(Distributed Claims)
--クレームの暗号化(Encrypted Claims)

**外部クレーム [#jb63c82f]
OPは、扱うクレームの内容によって、
-集約クレーム
-分散クレーム

どちらを利用すべきかを判断する必要がある。

***集約クレーム [#yfd0840d]
-別のOPが持つクレームを署名付きで提供すること。

-RPからリクエストを受けたOPは、事前に取得していた、~
もしくは動的に取得した別のOPのクレームをレスポンスに含む。

一定期間変更されないことが保証されており~
キャッシュの効果があるものは集約クレーム。

***分散クレーム [#xaa4e17c]
クレームそのものではなく、問い合わせ先のURLを扱う。

-Publicなクレームの場合
--エンドポイントのURL

-ユーザー認可が必要な場合
--エンドポイントのURL
--OAuth 2.0のアクセストークン

をレスポンスに含む。

頻繁に更新されるものは分散クレーム。

**クレーム暗号化 [#vfd3c786]
クレーム(JSONデータ)の
-署名作成(JWS)
-暗号化(JWE)

の方法は、IETFのJOSE WGにて仕様が策定されている。

-Javascript Object Signing and Encryption (jose)~
http://datatracker.ietf.org/wg/jose/

*** [#c066b69f]

***JSON Web Encryption(JWE) [#y564ec58]
JSONデータで表現されたクレームを、

-OP:クレームを暗号化する。
-OP:RPにリダイレクトして渡す。
-RP:クレームを復号化する。

*OpenID Connectのシーケンス [#s55b276e]

**Webアプリ [#h438d001]
-OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜~
OpenID Connect Authorization Code Flow~
http://www.slideshare.net/kura_lab/openid-connect-id/28

** [#h438d001]
-OpenID Connect体験 - Qiita~
http://qiita.com/sonedazaurus/items/753a65186f1be7185b39

***STEP1 Authorization codeの取得 [#w6d2830e]
ID連携したいアプリケーションがIdpからAuthorization codeを取得。

-リクエスト
 https://xxxxxxx? ---> IdpのURL
 response_type=code+id_token
 &client_id={client_id}
 &redirect_uri=http://example.com
 &state=CSRF対策のランダム文字列
 &scope=openid+profile
 &nonce=リプレイアタック対策のランダム文字列

-パラメタ
|パラメータ|必須|説明|h
|response_type|○|「code」と「id_token」を指定|
|client_id|○|事前に準備したclient_idの値を指定|
|redirect_uri|○|アプリケーションID登録時のコールバックURLに入力したURLを指定|
|state||CSRF対策のランダム文字列を指定|
|scope|○|・openid:ユーザー識別子を取得(必須)&br;・profile:姓名・生年・性別が取得&br;・email:メールアドレスと確認済みフラグを取得&br;・address:ユーザー登録住所情報が取得|
|nonce|id_tokenを取得する際は必須|リプレイアタック対策のランダム文字列を指定|
|display||ユーザのUIを選択:&br;・page(PC用UI、デフォルト値)&br;・touch(スマートフォン用UI)&br;・wap(フィーチャーフォン用UI)&br;・inapp(ネイティブアプリ用UI)~|
|その他、Idp独自パラメタ||-|

-成功するとログイン/同意画面が表示される。~
一度同意すると、次回以降同意画面は省略される。

-ログイン/同意が完了する(もしくは事前にログイン、同意している)と、~
以下のようなURLで「http://example.com」にリダイレクトされる。
 http://example.com/?code=xxxxxxxx&state=CSRF対策のランダム文字列

***STEP2 Access Token、ID Tokenの取得 [#ma165906]
**モバイルアプリ [#v2c717b3]
-デジタル・アイデンティティ技術最新動向(4):~
「OpenID Connect」を理解する (2/2) - @IT~
http://www.atmarkit.co.jp/ait/articles/1209/27/news138_2.html

***Step 0:Discovery & Dynamic Client Registration [#l8e54863]
OP探索と動的なRP登録

「○○のIDでログイン」というリンクを選択する替わりに、~
次の2種類の値をOP特定(Discovery)のためのヒントとして利用できる。

-メールアドレス~
例 : ritou@openidconnect.info
-OP URL~
例 : https://openidconnect.info

*次期AD FS [#hcd0bd22]
-IdM実験室: [AD FS]OpenID Connectに対応した次期AD FSを試す~
http://idmlab.eidentity.jp/2015/08/ad-fsopenid-connectad-fs.html


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