Open棟梁Project - マイクロソフト系技術情報 Wiki -[[戻る>クレームベース認証#td7a8a84]] * 目次 [#e8f85b16] #contents *概要 [#iaa04036] OpenID対応について。 *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]