ユーザーの細かなプロファイル情報を取得するにはZIGOROuのOpenID Short Clinic

OpenIDにかんするさまざまな疑問を解消していく本連載。今回は、OpenIDに対応した場合にRelying Party側がユーザーの細かなプロファイル情報を取得する方法について解説する。

» 2008年04月08日 00時00分 公開
[山口徹,ITmedia]

当社が手掛けているWebサービスをOpenID対応にしようと考えています。しかし、OpenIDに対応してしまうと、当社側に新規ユーザーの細かなプロファイル情報を蓄積できず、ユーザープロファイルを基にしたマーケティングなどができなくなるのではと不安です。OpenIDに対応した場合でも、Relying Party側がユーザーの細かなプロファイルを取得することは可能でしょうか。また、取得できるとすればどんな情報が取得し得るのか教えてください。


属性交換を利用すればRelying Party側がユーザーの細かなプロファイルを取得することは可能です「OpenIDに対応するメリットは?」でも紹介しましたが、OpenID ProviderからRelying Partyへ属性情報を渡すための仕組みとして、属性交換と呼ばれるものが、sreg(Simple Registration Extension)およびAX(Attribute Exchange)といった拡張仕様によって定義されています。

 例えば、sregを利用すると、次のような属性情報を取得できます。

name detail
nickname ニックネーム
email メールアドレス
fullname フルネーム
dob 誕生日(YYYY-MM-DD)
gender 性別
postcode 郵便番号
country
language 言語
timezone タイムゾーン
sregで取得可能な属性情報

 これらは取得のみで設定はできません。一方、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」などで書き連ねている。


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ