OpenIDについて

OpenIDについて調べる必要があったので調べました。(結局ある意味で無意味だったのだが・・・・)



gihyo.jp(http://gihyo.jp/dev/feature/01/openid/0001)
ここが一番わかりやすい気がする。

最低限覚えておきたい,OpenIDで登場する用語

より詳しくは,OpenIDの仕様書や@ITでのOpenIDの仕様と技術などを参照してください。

OP(OpenID Provider)
OpenIDによる認証サービスの提供者です。
RP(Relying Party)
OpenIDによる認証を受け入れるサイトです。
Claimed Identifier
利用者のOpenIDアカウント名。本連載では便宜的に「OpenIDアカウント」と呼びます。
OpenIDのログイン方法には,以下の2種類がありました。

* OpenIDのアカウント名を入力してログインする(はてなの例)
* OPのURLを入力してログインする(Yahoo!の例)

バックナンバー(読めていないので、今度読みます)

いますぐ使えるOpenID

* 第6回 設計・運用の観点から考えるOpenIDの課題
* 第5回 Railsで作るOpenID対応アプリケーション実践(後編)
* 第4回 Railsで作るOpenID対応アプリケーション実践(前編)
* 第3回 OpenIDプロトコルの特徴−DiscoveryとSREG
* 第2回 OpenIDライブラリに付属しているRPサーバを動かしてみる
* 第1回 OpenIDサービスを利用して,OpenIDの仕組みを理解する





OpenID.ne,jp http://www.openid.ne.jp/
  (OpelID.ne.jpは https://www.thinkit.co.jp/cert/article/0712/7/1/3.htm )
「登録すると自分用のIdentifier URLを1つ用意してもらえるサービスで、
いわば「OpenIDでログインできる」だけの機能を持ったアカウントを提供してくれるわけです。」)
OpenIDとは、webサイトのURL 形式で構成されたユーザーの身元確認をするためのIDです。

国内サイト (日本語対応)

Choix http://www.choix.jp
LiveJournal http://www.livejournal.com/openid
Zooomr.com http://www.zooomr.com/logi
Movable Type Weblogs http://www.sixapart.com/movabletype
Place Engine http://www.placeengine.com/auth/login
Haru.fm http://www.haru.fm
アバウトミー http://aboutme.jp
Stack Stock Books http://stack.nayutaya.jp/
2manji http://2manji.jp
読書管理ツール・リーマネ http://oosama.zal.jp/bo2ks/
八重山毎日新聞 http://www.y-mainichi.co.jp/
UPD.JP http://upd.jp/
オンライン付箋サービス lino http://linoit.com/
ClipCast http://clipcast.jp/
本の余白に書き込む会 http://yohaku.info/
Lanavi http://lanavi.net/
BMW MINI FANサイト http://bmwmini.jp/
埼玉の地域情報&コミュニケーション Saitama-e.com http://www.saitama-e.com/





(IT pro http://itpro.nikkeibp.co.jp/article/Keyword/20070424/269329/
OpenID」は,一つのIDでインターネットのさまざまなWebサイトの認証を実現するしくみである。
IDにURLを使うのが特徴だ。

OpenIDの発行/認証サイトは,ユーザー名やメール・アドレスなどの情報を登録することでIDを発行してくれる。
IDは,「ユーザー名+発行/認証サイトのドメイン名」という形になる。
例えば,Openid.ne.jpに「nnw」というユーザー名で登録すると,
「nnw.openid.ne.jp」がIDとして割り当てられる。

OpenIDを取得していれば,自分のサイトのURLをOpenIDとして使うことも可能だ。自分のサイトの
ホームページ(HTMLファイル)のヘッダー情報に,2行のタグを書き加えると,
そのページのURLをOpenIDのIDとして使えるようになる。
タグの書式はOpenID認証サイトに情報として掲載されている。





(Think IT https://www.thinkit.co.jp/cert/article/0712/7/1/3.htm
OpenIDはIdPに対して「現在Webブラウザでアクセスをしてきている人が、
指定したIdentifierであらわされるユーザと同一人物か」を示すものです。しかし、
それ以上でも、それ以下でもありません。その人の人となりを保証するものではないのです。

OpenIDではID情報として「URL」を利用します。これは「OpenIDを使ってログインを行う場合には、
自分のアイデンティティをあらわすURLを入力欄に入力する」という意味です。

OpenIDのIdPは誰でも実装することができます。

ConsumerとしてOpenIDに対応しているサービスの中には、AOLやはてなのように、
特定のIdPを利用したOpenIDだけに対応する、
という「ホワイトリスト」方式を使っているところもあります。



ホワイトリスト方式とは?

 (NetStar http://category.netstar-inc.com/faq/faq_015.html )
URLリストを用いたフィルタリング方式の一つで、サービス提供者側が、
予めサイトの内容を確認した上で、フィルタリングの目的に合致していると思われるサイトだけを
リスト化しておき、利用者からのサイト閲覧要求があった際に、このリスト中に含まれるサイトの
み閲覧を許可するというもの




(コベルシステム株式会社 http://www.kobelcosys.co.jp/company/itwords/openid.html
OpenIDの仕組み
OpenIDはユーザ・利用サービス・認証サーバの3つが協調して動作します。
ユーザは認証サーバにパスワードや個人情報を登録してOpenIDを発行してもらいます。
サービスは認証サーバにユーザが入力した
OpenIDが正しいものかどうかの判断を委任します。サーバからの認証情報をもとに、
ユーザへサービス提供を許可するかどうかを決定します。オプションとして、
サービスは認証サーバからユーザに関する登録情報を取得することもできます。




@IThttp://www.atmarkit.co.jp/fsecurity/rensai/openid01/openid01.html
その中でも特筆すべき事柄は2つで、1つは特定のサービスプロバイダのアカウントに依存していること、
もう1つがWebブラウザをベースとした認証システムであるということです。

* 認証(Authentication)
そのユーザーが自分の物であると主張するIDに対して、そのIDが確かにそのユーザーの物であるということを保証すること

* 認可(Authorize)
認証されたIDを受け入れ、サービスに対して適切な権限を与えること


認証局はいままでの認証サービスのように特定のベンダが提供する唯一の場所というわけではなく、
誰でも認証局になることができます。

OpenID用語集

●End User
 実際にConsumerに対して自分のIdentityを認証しようとするユーザーのことです。

●Identifier
 IdentifierはURLのことです。OpenID authentication protocolのすべてのフローはEnd Userが所有するURLを認証することに関するものです。

●Claimed Identifier
 End Userが自分で所有していると主張するIdentifierのことで、Consumerによってまだ確認されていないIdentifierです。

●Verified Identifier
 Consumerに対して、End Userが所有していると認められたIdentifierのことです。

●Consumer
 End Userが所有するClaimed Identifierの認証を、IdPに対して要求するWebサービスのことです。

●Identity Provider
 IdP(Identify Provider)やServerとも呼ばれます。 ConsumerがEnd Userが所有するClaimed Identifierの
暗号化された証明に対してコンタクトを取る相手がIdentify Provider(以下、IdP)です。
どのようにしてEnd Userが自分を認証するIdPに対して自分のIdentityを証明するかはOpenID Authenticationの範囲外です【注3】。

●User-Agent
 End Userが所有するWebブラウザのことです。特別なプラグインやJavaScriptの実行環境は必要ありません。


OpenIDは個人のアイデンティティをURLとして表現し、分散型の認証方式を提供するオープンな認証システムだといえます。





http://www.atmarkit.co.jp/fsecurity/rensai/openid02/openid01.html
End Userは自分のClaimed Identifierを認証してくれるIdPを明示する必要があります。

 この明示の仕方ですが、具体的にはそのClaimed IdentifierをWebブラウザで開いたときに表示されるhead要素の中にlink要素として、
下記のように記載します。

 このlink要素の各属性について解説すると、
"openid.server"

* rel
openid.serverと記載します。
* href
IdPが提供するサーバのエンドポイントURLを記載します。

となります。



ConsumerサイトがOpenIDに対応していることをEnd Userに示すために、OpenIDでログインできるフォームに対して、下記のような表示を行うのが望ましいです。
図 ログインフォームの例

 仮に次のようにHTMLを記述したならば、



Enter your OpenID URL



 textフィールドに対するスタイルを下記のようにして、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;
}



OpenIDで認証手続きの流れ
具体的にOpenIDによる認証手続きの流れを追っていきましょう。まず初めに全体の流れを列挙します。

1. Consumer はEnd Userから送られてきたClaimed IdentifierにあるHTML文書を実際にパースし、openid.delegateが存在すれば適切に処理しつつ、openid.serverの値、すなわちIdPのエンドポイントURLを入手します。

2. ConsumerはIdPとの間で、Claimed Identifierの認証手続きを行う前に、手続きの仕方をsmart modeかdumb modeのいずれかから選ぶことができます【注2】。
smart modeとは、事前にConsumerとIdPの間で共通鍵を共有し、信頼関係を成立させておくモードです。
一方、dumb modeは事前に共通鍵を共有することなく、Claimed Identifierの認証手続きを行いますが、smart modeと比べて一連の手続きの最後に1つ余計に処理が増えます。

【注2】
仕様においてはsmart modeを選択することが強く勧められています。

3. ConsumerはEnd UserのUser-Agentを特定のクエリーパラメータを付与したIdPのエンドポイントURLに対してリダイレクトさせます。
ここでもIdPに対する問い合わせが2通りあります。Ajaxスタイルの非同期通信による問い合わせ方式と、実際に画面が遷移しユーザーが都度必要ならばIdPの認証手続きページにおいて、ログインしたり情報の開示の可否を選択できる方式です。
いずれの手続きも正しく完了した場合、IdPは事前にConsumerが指定したURLにEnd UserのUser-Agentをリダイレクトさせます。

4. ConsumerはEnd UserのUser-Agent経由で受け取ったIdPからのレスポンスを受け取ります。
ここで最初にdumb modeを選択していた場合は、受け取ったデータの妥当性をConsumerは直接IdPに問い合わせます。
 これらをまとめると、

* Consumerは、smart modeとdumb modeという、ConsumerとIdP間で事前に信頼関係を結ぶか否かで変わる2つのモードを選択できる。

* Ajaxスタイルの問い合わせと、画面遷移する問い合わせの2パターンが用意されている。

となります。