日向夏特殊応援部隊

俺様向けメモ

斜め読み OpenID Simple Registration Extension 1.0

OpenID Simple Registration Extension 1.0の斜め読みです。

概要

OpenID Simple Registrationは非常に軽量なプロフィール交換の為のOpenID Authenticationプロトコルの拡張です。
エンドユーザーがあるウェブサービスの新しいアカウントを登録する際に、8つの共通の要求された情報要素を渡すように設計されています。

Request Format

リクエストパラメータの詳細は下記のようになり、さらにcheckid_immediateまたはcheckid_setupモードと共に送信されるべきです。
次に述べる全てのリクエストパラメータはオプショナルですが、openid.sreg.requiredかopenid.sreg.optionalのうちいずれか一つはリクエストに含まれなければなりません。

openid.sreg.required
カンマ区切りのフィールド名のリストで、もしレスポンスに含まれない場合、コンシューマーはエンドユーザーの同意なしに*1登録を完了させる事を妨げられるであろう。フィールド名はResponse Formatの項で、"openid.sreg."というプリフィクスを除いた形で明記する。
openid.sreg.optional
カンマ区切りのフィールド名のリストで、コンシューマーによって使用される。しかし登録が完了するまでは空である。フィールド名はResponse Formatの項で、"openid.sreg."というプリフィクスを除いた形で明記する。
openid.sreg.policy_url
コンシューマーがプロフィールデータがどのように使用されるかに関してエンドユーザーに読ませる為に提供するURLです。IdPはそれが与えられた場合、エンドユーザーにそのURLを表示するべきである。
Response Format

下記のフィールドはopenid.modeがid_resの時にIdPのレスポンスの中に含まれるべき物である。

レスポンスの"openid.signed"フィールド一覧は登録時のフィールド名を(例えばsreg.nicknameのように)openid.というプレフィクスを除いた形で含めなければならない。"openid.sig"フィールドはsregの為に署名を提供しなければならない。フィールドはOpenID Authentication Specificationに従ってOpenIDデータを付け加える。

もしコンシューマーの署名確認が失敗したら、IdPからの登録データでは無いと扱われる方が良い。

コンシューマーは必須またはオプションとしてマークされたフィールドを不足させないレスポンスをハンドルする為に準備されなければならない。
必須のフィールドを含めなかったり、他に必須でないフィールド含めたりした場合の挙動はコンシューマー次第である。
コンシューマーはこの状況をエンドユーザーが手動でデータを入力したのと同じようにみなすべきである。

レスポンスの中でひとつのフィールドが繰り返されてはならない。*2さらに含まれる全てのフィールドはこの使用の中で定義されたフィールドのセットから選ばれなければならない。

IdPはレスポンスクエリーの中で下記のフィールドのいかなるサブセットも戻すかもしれない。

openid.sreg.nickname
エンドユーザーがニックネームとして使う全てのUTF-8文字列
openid.sreg.email
エンドユーザーのメールアドレス
openid.sreg.fullname
エンドユーザーのフルネームを表現したUTF-8文字列
openid.sreg.dob
エンドユーザーの誕生日(YYYY-MM-DD)
openid.sreg.gender
エンドユーザーの性別(M or F)
openid.sreg.postcode
UTF-8文字列。エンドユーザーの住んでいる国の郵便システムに則った郵便番号
openid.sreg.country
ISO3166で定義されたエンドユーザーの国。
openid.sreg.language
ISO639で定義されたエンドユーザーの言語。
openid.sreg.timezone
TimeZoneデータベースからのアスキー文字列。

まとめ

要するにプロフィール交換用のOpenIDの拡張みたいですね。
ちらっと検索したら、ここギコさんの記事が当たりました。
この記事当時ではまだ対応しているサービスが少ない状態だったみたいですね。

情報元を見る限りは状況が変わってない模様。。。

*1:原文だとEnd User interationだけどinterationって単語無いと思う。何となく想像した訳w

*2:重複しちゃ駄目ってこと?