ユーザーの細かなプロファイル情報を取得するには:ZIGOROuのOpenID Short Clinic
OpenIDにかんするさまざまな疑問を解消していく本連載。今回は、OpenIDに対応した場合にRelying Party側がユーザーの細かなプロファイル情報を取得する方法について解説する。
当社が手掛けているWebサービスをOpenID対応にしようと考えています。しかし、OpenIDに対応してしまうと、当社側に新規ユーザーの細かなプロファイル情報を蓄積できず、ユーザープロファイルを基にしたマーケティングなどができなくなるのではと不安です。OpenIDに対応した場合でも、Relying Party側がユーザーの細かなプロファイルを取得することは可能でしょうか。また、取得できるとすればどんな情報が取得し得るのか教えてください。
属性交換を利用すればRelying Party側がユーザーの細かなプロファイルを取得することは可能です。「OpenIDに対応するメリットは?」でも紹介しましたが、OpenID ProviderからRelying Partyへ属性情報を渡すための仕組みとして、属性交換と呼ばれるものが、sreg(Simple Registration Extension)およびAX(Attribute Exchange)といった拡張仕様によって定義されています。
例えば、sregを利用すると、次のような属性情報を取得できます。
name | detail |
---|---|
nickname | ニックネーム |
メールアドレス | |
fullname | フルネーム |
dob | 誕生日(YYYY-MM-DD) |
gender | 性別 |
postcode | 郵便番号 |
country | 国 |
language | 言語 |
timezone | タイムゾーン |
これらは取得のみで設定はできません。一方、AXではOpenID Provider側が対応していれば設定も可能です。ここがsregとAXの大きな違いです。なお、現時点でAXで取り扱う属性については、Attribute Properties for OpenID Attribute Exchangeで取り決められています。
具体的な話をすると、Relying Party側の会員登録フォームなどでユーザーが行うアクションの例としては、
- OpenIDのロゴがあるフォームに自分のOpenID URLを入力
- OpenID Providerにてログイン
- そのRelying Partyに認証セッションをどのように公開するかを選択(拒否も可能)
- そのRelying Partyに公開するプロフィールデータを選択(sregのときのみ)
- 元の会員登録フォームに戻る。sregで補完できる部分は全部補完された状態
のようになるでしょう。
Relying Party側では認証時にユーザーをリダイレクトさせるURLのクエリパラメータに、以下のようなsreg関連のキーと値を追加することで、これらの値がレスポンスと一緒に返ってきます。
name | detail |
---|---|
openid.ns.sreg | http://openid.net/extensions/sreg/1.1 |
openid.sreg.required | 必須項目として取得する属性情報名をカンマ区切りで(例:nickname,email) |
openid.sreg.optional | オプションとして取得する属性名をカンマ区切りで(例:dob,fullname) |
上記に示したように、sregではrequiredのほかにoptionalという指定でも属性情報の取得リクエストをOpenID Providerに対して送ることが可能です。この場合、ユーザーはこの要求を拒否することも可能です。適用しようとしているフォームなどで必須ではないができれば取得したい属性については、optionalで指定するとよいでしょう。
なお、こうした属性交換を行うには、OpenID Providerがsreg/AXに対応している必要があるほか、ユーザーがそのprofileを公開することに同意する必要があります。現時点でsreg/AXに対応した国内のOpenID Providerはそう多くない(海外では割と対応しています)ため、あくまで補完的な方法として考えておいた方がよいかもしれません。
また、Relying Partyによっては、職種や業種など、sregでは定義されていないようなユーザー情報を必要とする場合もあるかもしれません。Attribute Properties for OpenID Attribute Exchangeによれば、個人にひもづくさまざまな属性情報の型が定義されていますが、その中に企業名、職種名などが含まれています。いずれ多くのOpenID Providerがsreg/AXに対応してくるかと思いますが、sregで挙がっている属性位を最大公約数として考えた方が現時点では無難でしょう。
著者:山口 徹(やまぐち とおる)
サイボウズ・ラボで研究開発にいそしむPerlハッカー。Perlを中心とした開発のノウハウやネタをShibuya Perl Mongersのイベントで発表するなど講演活動も行う。最近ではOpenIDの実装方法や考察などをブログ「Yet Another Hackadelic」などで書き連ねている。
関連記事
- OpenIDに対応するメリットは?
OpenIDをめぐってかなりの盛り上がりがみられるようになってきた。しかし、同規格についての詳細やその開発プロセスについてはまだまだ情報が不足している。本連載は、OpenIDにかんするさまざまな疑問をZIGOROuこと山口徹が短時間で解消していく。 - OpenID入門――その導入で何が変わって何が変わらないのか
ここ数カ月で注目を集めつつある話題の1つに、OpenIDというオープン系の分散型デジタル認証システムがある。本稿では、最も基本的なレベルから、OpenIDでは行えないことまで網羅したOpenID入門をお届けする。 - 思い切ってOpenIDを信頼しよう
OpenIDは信頼できないと言う人もいるが、ある意味では、少なくとも任意のユーザー名とパスワードでログインするのと同じくらいには信頼できる。 - 国内でOpenID推進団体へ 新団体設立、ヤフーら賛同
- ヤフーがOpenIDを発行 2000万ユーザーの取り込みが可能に
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.