前回に引き続き、OpenID Authentication 1.1 を読んで仕組みを学びます。
3.概要は、3.1 HTMLドキュメントをID化、 3.2 ID入力、 3.3 ConsumerがIDのURLを取得、3.4 Smart modeとdumb mode、3.5
ConsumerがIDを確認 の5つのパートに分かれています。
今回はこのうち 3.1 HTMLドキュメントをID化、 3.2 ID入力について。
エンドユーザが入力したID(URL)ページのヘッダ部分には、次のタグによってIdentity Providerが指し示されます(3.1)。
<link rel="openid.server" href="http://openid.example.com/">
また、入力されたIDがIdentity ProviderでのIDと異なる場合もあります。その場合には、以下のコードが入力IDページのヘッダ部分に記述されているはずです。(ここではOpenID Identity Provederの LiveJournal account を例としています。)
<link rel="openid.server" href="http://www.livejournal.com/openid/server.bml">
<link rel="openid.delegate" href="http://exampleuser.livejournal.com/">
さらなる注意点としては、1) URLに含まれるクエリ文字列(たとえば “?id=123&auth=yes” など)は適切に保持し、2) 必ず絶対URLを使い(相対URLは不可)、3) URLに含まれる &, <, >, ” 以外の記号は %xx のようにエスケープ処理を施す、という3つがあります。
ということで、実際に構築する際には次のことが必要です。
- 入力IDページのHTMLドキュメントを取得
- ヘッダの openid.server の取り出し
- ヘッダの openid.delegate があればそれも取り出し(なければ入力IDをそのまま使用)
- URLをエスケープ
次に、 エンドユーザのID入力について(3.2)。入力欄はURL用1つのみ。
OpenID logo をフォームフィールドにつけるよう薦められています。また、エンドユーザは”http://”を入力してもしなくてもいいし、一番最後にスラッシュを付けても付けなくてもいいことになっています。これは受け取るConsumer側で処理しなくてはいけません。フォームフィールドは、特に問題がなければ “openid_url” という名前がいいでしょう。
3.3, 3.4, 3.5については次回。

