[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]] -[[戻る>クレームベース認証#td7a8a84]] * 目次 [#e8f85b16] #contents *概要 [#iaa04036] -[[戻る>クレームベース認証#td7a8a84]] *OpenID 1.1 [#j4d08fe6] **End Userは自分のClaimed Identifierを認証するIdPを明示。 [#lcd709c8] End Userは自分のClaimed Identifierを認証してくれるIdPを明示する。 ***Claimed IdentifierとIdPのエンドポイントURLが同一ホストにある場合 [#s8ed5236] head要素の中にlink要素として、下記のように記載。 <link rel="openid.server" href="IdPが提供するサーバのエンドポイントURL" /> e.g. : http://profile.hatena.ne.jp/h1romas4/ ***Claimed IdentifierとIdPのエンドポイントURLが同一ホストにない場合 [#ca879f87] head要素の中にlink要素として、下記のように記載。~ これにより、Claimed Identifierの認証を外部のIdPサーバに委ねる事ができる。 <link rel="openid.server" href="IdPが提供するサーバのエンドポイントURL" /> <link rel="openid.delegate" href="Claimed Identifierとして使用するURL" /> e.g. : http://openid.maple4ever.net/hiromasa/ **ConsumerサイトのOpenIDログイン・フォーム [#lba1601f] Enter your OpenID URLなので、Claimed IdentifierのURLを入力する。 ***HTML [#e41c1f5b] ブラウザのオートコンプリートを利用するため、 ~ OpenID URLのテキスト・フィールドはname属性値に~ openid_urlと統一した名前を付けることが推奨されている。 <form id="openid_form" action="./login.cgi" method="post"> <fieldset> <legend>Enter your OpenID URL</legend> <input type="text" id="openid_url" ≪name="openid_url"≫ value="" /> <input type="submit" id="openid_url_submit" name="openid_url_submit" value="LOGIN" /> </fieldset> </form> ***CSS [#t0cd71b7] OpenIDのロゴを表示する。 input#openid_url { text-indent: 18px; background-image: url("http://sample.openid-idp.com/img/openid_logo.png"); background-repeat: no-repeat; background-position: left center; } **処理シーケンス [#d8fb2560] 処理シーケンスを、Consumerサイト上の処理を中心に説明する。 +OpenIDログイン・フォームにClaimed IdentifierのURLが入力される。 +Consumerは、"openid.server"と"openid.delegate"を参照する。 +通常、[[smart mode>#bee468a7]]を選択し、Claimed Identifierの認証手続きを行う。 +ConsumerはEnd UserのUser-AgentにIdPに対する問い合わせを示指する(2通りの方式がある)。 ++ユーザにリダイレクト要求(302リダイレクト)を返し、IdPにリクエストさせる。~ これにより、IdPの認証手続きページに画面遷移しログインや情報開示可否を選択できる。 ++Ajaxスタイルの非同期通信による問い合わせ方式 +ConsumerはEnd UserのUser-AgentがIdPから受け取った紹介状をリダイレクトで受け取る。 +[[dumb mode>#bee468a7]]の場合、Consumerは紹介状の妥当性を直接IdPに問い合わせる。 ***openid.mode [#g794fd6a] -associateモード --ConsumerとIdPの間で、共通鍵の共有を行う。 --[[smart mode>#bee468a7]]を処理する場合に必要。~ associateモードが失敗した場合は、[[dumb mode>#bee468a7]]に移行する。 --Consumer <---(POST)---> IdP -check_authenticationモード --紹介状が正しいかどうか、IdPへ問い合わせる。 --[[dumb mode>#bee468a7]]で必要になる。 --Consumer <---(GET)---> IdP -checkid_immediateモード --Claimed IdentifierがVerified IdentifierであるかIdPへ問い合わせる。 --Consumer <---(302 redirect)---> User-Agent <---(GET)---> IdP -checkid_setupモード --属性情報の通知方法を設定可能なIdpの画面が提供される。 --Consumer <---(302 redirect)---> User-Agent <---(GET)---> IdP ***smart modeとdumb mode [#bee468a7] OpenID認証における、大まかな動作指針 -smart mode~ 事前にConsumerとIdPの間で共通鍵を共有し、信頼関係を成立させておくモード。 -dumb mode --事前に共通鍵を共有することなく、Claimed Identifierの認証手続きを行う。 --smart modeと比べて一連の手続きの最後に1つ余計に処理が増える。 -id_res --??? **OpenID Simple Registration Extension 1.0 [#v0725f58] OpenID 1.1 の拡張機能で、End Userの登録情報を照会する機能。 ***機能概要 [#d94c2872] -IdPのエンドポイントURLにリダイレクトさせる際に所定のクエリーパラメータを追加する。 -紹介状をリダイレクトで受け取る際のURLに含まれるクエリパラメータの一部として返ってくる。 -このリダイレクトURLのクエリパラメータに含める事ができる値 --ニックネーム --メールアドレス --フルネーム --誕生日 --性別 --郵便番号 --国 --言語 --タイムゾーン -Consumerは照会したい項目を選択できる。 -End Userは照会要求を拒否できる。 **セキュリティ [#q8c8d8f1] 難しい。 -OpenIDの仕様と技術(4):OpenIDをとりまくセキュリティ上の脅威とその対策 (1/3) - @IT~ http://www.atmarkit.co.jp/ait/articles/0711/20/news128.html 以下の3つがある。 -通信経路のセキュリティ -セキュリティ上の脅威 -評価 ***通信経路のセキュリティ [#w88d0632] -smart modeで、Consumer <---> IdP間で共通鍵を共有する。 --Diffie-Hellman鍵共有(または鍵交換)プロトコルを使用する。 --以降、HMAC-SHA1(ハッシュ関数と秘密鍵)の署名でメッセージ改ざんを防止。 -メッセージ署名 --checkid_setup/checkid_immediateモード~ ・・・ --id_resモード~ IdPから返される紹介状 ***セキュリティ上の脅威 [#m4adb8d6] -フィッシング(悪意のあるConsumerサイトからニセのIdpに誘導) -OpenID Realm Spoofing(より、狡猾なフィッシング) -Google検索などを用いてアカウント名の収集が可能。 -紹介状の送信に対するリプレイ攻撃が可能。~ Consumer側で、nonceワンタイムな値を追加する。 ***IdPの評価 [#f7039926] -IdPを運営してきた実績 -認証フォームに対するヘルプ機能 -httpsへの対応 -アカウントのリカバリ機能の充実 -プライバシーポリシーの内容 -スパム、セキュリティ対策 -Attribute Exchange(AX)への対応 -Provider Authentication Policy Extension(PAPE)への対応 -アカウント登録手続きの内容 AOLは許可するIdPをホワイトリスト形式で指定している。 **参考 [#zb079ddc] -OpenIDの仕様と技術 - @IT~ --(2):あなたのサイトをOpenID対応にしている2行の意味 (1/3)~ http://www.atmarkit.co.jp/ait/articles/0708/10/news130.html --(3):第3回 Consumerの実装を知り、OpenIDを使ってみよう (1/3)~ http://www.atmarkit.co.jp/ait/articles/0709/21/news142.html --(4):OpenIDをとりまくセキュリティ上の脅威とその対策 (1/3)~ http://www.atmarkit.co.jp/ait/articles/0711/20/news128.html -OpenID と delegate の設定 | hiromasa.another :o)~ http://another.maple4ever.net/archives/133/ *OpenID 2.0 [#z93c5118] -[[用語>クレームベース認証#w507f337]] -一般ユーザーがより使いやすい仕様。 --Identifier --認証方式 **Identifierの記述形式 [#q2d9294f] -URLのほかに、XRIというURIを拡張した形式で記述できる。 -XRIは従来のURLと比べて短い文字列を使用できる。 -XRIはドメインのように取得する必要がある。 -XRI:// ---> http://xri.net/ と変更すると、~ xri.netのXRI Proxy ResolverがXRI文字列を解釈して適切なリソースを返す。 **User-Supplied Identifier [#kddef9f7] これまでどおり -RPはエンドユーザーにログインフォームを表示する。 -Claimed IdentifierをRPのログインフォームに入力して認証する。 ***変更点 [#qc3a2274] -1.1の場合ではClaimed Identifierを入力。 -2.0ではUser-Supplied Identifierを入力。 --従来どおりにClaimed IdentifierをRPのログインフォームに入力して認証 --OPで使用したいIdentifierを選択しOP Identifierを入力して認証~ ユーザーは自分の長いClaimed Identifierを覚える必要がなくなる。 ---OPでOP Identifierを入力して認証を済ませる。 ---OP Identifierを選択して、認証結果をRPに返す。 --User-Supplied Identifierとは ---End UserによってRPに対して提示されるIdentifier ---Claimed IdentifierまたはOP Identifierの総称 **XRDSベースのdiscovery [#r5297d6a] XRDSというXMLのフォーマットは以下が可能。 -サービスに対応している認証サービス(OP)の詳細を指定 --サービス(RP?OP?)の優先順位を指定 --サービス(RP?OP?)のエンドポイントURLを指定 ***これまで [#u7cf4280] +Claimed Identifierを入力 +RPがClaimed Identifierにあるlink要素を解決 --openid.server --必要であればopenid.delegate、 +RPはエンドユーザーをOPにリダイレクト ***変更点 [#s10b2611] IdentifierがXRDS文書を指している場合、~ XRDS文書によってOPが決定される。 -OpenID 2.0ベースでのdelegate設定サンプル <head> <link rel="openid.server" href="OpenID 1.1のIdPが提供するサーバのエンドポイントURL" /> <link rel="openid.delegate" href="OpenID 1.1のClaimed Identifierとして使用するURL" /> <link rel="openid2.local_id" href="OpenID 2.0のOP-Local Identifier URL" /> <link rel="openid2.provider" href="OpenID 2.0のOPのエンドポイントURL" /> <meta http-equiv="x-xrds-location" content="XRDS文書のURL" /> OP-Local Identifier:OP上でのユーザID **参考 [#d9a8abaa] -OpenIDの仕様と技術 - @IT~ (5):OpenID Authentication 2.0時代の幕開け (2-3/3)~ --http://www.atmarkit.co.jp/ait/articles/0802/19/news133_2.html --http://www.atmarkit.co.jp/ait/articles/0802/19/news133_3.html *参考 [#l4bff6f4] -OpenIDの仕様と技術 連載インデックス - @IT~ http://www.atmarkit.co.jp/fsecurity/index/index_openid.html ---- Tags: [[:認証基盤]], [[:クレームベース認証]]