下書き » OpenID Membership Authentication Method Draft-1
OpenID Membership Authentication Method Draft-1
概要
OpenIDメンバーシップ認証方式は、エンドユーザが特定のグループに属しているというメンバーシップを証明する方法を提供する。メンバーシップの管理とその認証はメンバーシッププロバイダ(Membership Provider)が実施するため、OpenID対応サイト(Relying Party)はメンバーシップに関わる情報の管理や認証処理を実装する必要がない。
OpenIDメンバーシップ認証方式は、OpenID認証の理念と枠組みの元でメンバーシップ認証を実現する手法の提供を目的に設計されている。OpenID対応サイトやユーザエージェントがメンバーシップ認証のための特別な機能を持っている必要はない。通常、メンバーシッププロバイダはOpenIDプロバイダとのペアで提供されるが、OpenID対応サイトやエンドユーザは別のメンバーシッププロバイダに認証処理を委託することができる。
グループ識別子(Group Identifier)の交換は本仕様に含まれない。
用語
- ユーザエージェント(User-Agent)
- エンドユーザが利用しているブラウザを指す。HTTP/1.1 RFC2616を実装するブラウザ。
- 主張識別子(Claimed Identifier)
- エンドユーザが所有または所属していると主張する識別子。OpenID認証においては、主張識別子は個人の識別子として使用するが、メンバーシップ認証においてはグループの識別子としても使用する。
- グループ識別子(Group Identifier)
- エンドユーザが所属していると主張するグループの識別子。OpenID認証における主張識別子と同意だが、個人ではなくグループを指し示す場合にこの呼び方をする。
- メンバーシップ識別子(Membership Identifier)
- エンドユーザが所属しているグループと、エンドユーザの関係(メンバーシップ)の識別子。グループ識別子はグループそのものを示す識別子であるのに対し、メンバーシップ識別子はグループとそれに属するエンドユーザとの関係(メンバーシップ)を示す識別子として使用する。
- 認証依存サイト(Relying Party)
- RP. エンドユーザが特定のグループに属していることの証明を希望しているWebアプリケーション。
- OpenIDプロバイダ(OpenID Provider)
- OP. エンドユーザがその識別子を制御しているという表明について、認証依存サイト(RP)が依存しているOpenID認証サーバ。
- メンバーシッププロバイダ(Membership Provider)
- MP. エンドユーザが特定のグループに属しているという表明について、認証依存サイトが依存しているOpenIDメンバーシップ認証サーバ。
- OP終点URL(OP Endpoint URL)
- エンドユーザが指定した識別子(User-Supplied Identifier)に対して行った探索行為(Discovery)で、RPが取得したOpenID認証プロトコルを受け取るURLを示す。この値は完全なHTTPかHTTPS URLでなくてはならない。
- MP終点URL(MP Endpoint URL)
- グループ識別子に対して行った探索行為で得たOpenIDメンバーシップ認証を受け取るURLを示す。この値は完全なHTTPかHTTPS URLでなくてはならない。MP終点URLは、OP終点URLとほぼ同じ挙動を示すため、RPはOPとの対話と同じ手続きで、MPと対話してメンバーシップ認証を実現することができる。
プロトコル概要
- 認証依存サイト(RP)は、エンドユーザの要求に応じてメンバーシップ認証プロセスを開始する。
- RPはユーザエージェントをメンバーシッププロバイダ(MP)にリダイレクトすることによって、メンバーシップ認証リクエストを行う。
- RPは通常のOpenID認証リクエストと同様のパラメータを使用してメンバーシップ認証リクエストを行う。エンドユーザのメンバーシップを認証したいグループの識別子を、主張識別子にセットして認証リクエストを行う。
- 認証リクエストを受け取ったMPは、エンドユーザがグループ識別子で示されたメンバーシップを所有しているか確認する。MPでのエンドユーザ認証方式とメンバーシップの表現、および認証に関連するあらゆるポリシーは本仕様の範囲外である。
- MPは認証が承認された表明または認証失敗のメッセージを伴って、ユーザエージェントをRPにリダイレクトする。この手続きはOpenID認証で行われる承認の表明と同じ形式で行われる。
- RPは、MPから得られた認証レスポンスを、OpenID認証におけるOPからの認証レスポンスと同様に検証する。
認証リクエスト
RPは認証したいグループ識別子からMP終点URLを探索する。この手続きはOpenID認証におけるユーザ提供識別子(User-Supplied Identifier)からOP終点URLを探索する場合と同様の手続きで行われる。
RPがMP終点URLの探索に成功し、MP終点URLとの間でOpenID認証のアソシエーション(association)を確立すると、MPに認証リクエストを送ってメンバーシップの承認を取得することができる。認証リクエストはOpenID認証における間接リクエストを使用する。
リクエスト変数
OpenID認証 9.1章のリクエスト変数と同じ変数を使用する。エンドユーザのメンバーシップを認証したいグループ識別子をopenid.claimed_idに指定する。
- openid.claimed_id
値: グループ識別子
エンドユーザのメンバーシップを認証したいグループ識別子を指定する。
認証レスポンス
OpenID認証10章の認証レスポンスと同じ変数を使用する。認証されたメンバーシップ識別子は認証レスポンスのopenid.claimed_idにセットされ、エンドユーザ識別子はopenid.identityにセットされる。
- openid.claimed_id
値: メンバーシップ識別子
グループとエンドユーザとの関係を示すメンバーシップ識別子が指定される。
- openid.identity
値: エンドユーザ識別子
MPで認証されたエンドユーザ識別子が指定される。
付録A 識別子の例
本仕様ではグループ識別子、およびメンバーシップ識別子については定義しない。これらの識別子の実装はMPに委ねられる。MPでの実装のために識別子の例をいくつか示す。
付録A.1 グループ識別子
あるエンドユーザは自身の識別子として "http://id.example.com/"
を用いている。このエンドユーザの友人たちは、グループ識別子 "http://id.example.com/friends"
で示すことができる。同様にこのエンドユーザの肉親は、グループ識別子 "http://id.example.com/family"
で示すことができる。
"http://id.example.com/friends/female"
"http://id.example.com/friends/male"
"http://id.example.com/Example.Inc"
付録A.2 メンバーシップ識別子
グループ識別子 "http://id.example.com/friends"
で示されるグループには、エンドユーザ”bob”が所属している。このメンバーシップは識別子 "http://id.example.com/friends/bob"
で示すことができる。同様に別のエンドユーザ”cathy”も同グループに所属している場合、このメンバーシップは "http://id.example.com/friends/cathy"
で示すことができる。
メンバーシップ識別子は、OpenID認証の認証レスポンスを受け取るRPでの主張識別子の取り扱いを考慮して、各々のメンバーシップに一意な識別子が割り当てられることが好ましい。
付録B MPの提供形態
OpenID Provider and Membership Provider(OMP)
OpenIDプロバイダが通常のエンドユーザ認証サービスと同時に、メンバーシップ認証サービスを提供するMPとしての役割を兼務する形態。
OMP上のユーザは、他のユーザをグループに分類し管理することができる。それぞれのグループにはグループ識別子が割り当てられる。RPはOMPに対してエンドユーザ認証と、メンバーシップ認証の2種類の要求を行うことができる。
OMPはSNSなど関係情報を既に保持しているサービスがOPを実施する場合の付加サービスとして提供する場合や、LANの情報システムにおけるユーザーとそのアクセス権を集中管理するユーザ認証システムなどがこの形態でのサービス提供が考えられる。
OMPのエンドユーザ認証
一般的なOPとRP間のエンドユーザ認証と同じ手続きを使用する。
- RPはエンドユーザが入力した識別子を探索し、OP終点URLを取得する。
- RPはエンドユーザのユーザエージェントをOP終点URLにリダイレクトして認証リクエストを開始する。
- OPはエンドユーザを認証し、認証レスポンスをRPに返す。
- RPは認証レスポンスを検証する。
OMPのメンバーシップ認証
メンバーシップを確認したいグループ識別子は、RPにおいて事前にエンドユーザ、またはRPの管理者が指定する。
- RPはグループ識別子を探索し、MP終点URLを取得する。
- RPはエンドユーザのユーザエージェントをMP終点URLにリダイレクトして認証リクエストを開始する。
- MPはエンドユーザを認証し、指定されたグループにエンドユーザがメンバーシップを所有しているか認証し、認証レスポンスをRPに返す。
- RPは認証レスポンスを検証する。
Independent Membership Provider(IMP):
OPとは切り離され、独立したMPとしてメンバーシップ認証サービスを提供する形態。
IMP上のユーザは、任意のOPが発行したユーザ識別子をグループに分類して管理することができる。それぞれのグループにはグループ識別子が割り当てられる。RPはIMPに対してメンバーシップ認証のみを要求し、エンドユーザ認証はそれぞれのOPに要求する。
IMP上のエンドユーザ認証についてここでは明言しないが、IMPは一般的なRPとして振る舞いエンドユーザを認証することがことが望ましい。
IMPでのエンドユーザ認証
エンドユーザがIMP上でメンバーシップを管理する場合、および他のエンドユーザがそのメンバーシップを証明する場合は、それぞれのエンドユーザがIMPでエンドユーザ認証を済ます必要がある。IMPは通常のRPとしてエンドユーザが入力した識別子を持つOPに認証リクエストを発行してエンドユーザ認証を行うことができる。
- IMPはRPとして、エンドユーザが入力した識別子を探索し、OP終点URLを取得する。
- IMPはRPとして、エンドユーザのユーザエージェントをOP終点URLにリダイレクトして認証リクエストを開始する。
- OPはエンドユーザを認証し、認証レスポンスをRP(IMP)に返す。
- IMPはRPとして、認証レスポンスを検証する。
IMP上でエンドユーザ認証が完了すると、エンドユーザはグループを作成することができる。グループにはメンバーシップを定義したい他のエンドユーザのユーザ識別子を追加する。任意のOPが発行したユーザ識別子を使ってメンバーシップを定義することができる。
グループにユーザ識別子をセットされたメンバーシップを持つ別のエンドユーザが、IMP上でメンバーシップ認証を実施する場合にも、同様の手続きでエンドユーザ認証が行われる。
IMPのメンバーシップ認証
メンバーシップを確認したいグループ識別子は、RPにおいて事前にエンドユーザ、またはRPの管理者が指定する。
- RPはグループ識別子を探索し、MP終点URLを取得する。
- RPはエンドユーザのユーザエージェントをMP終点URLにリダイレクトして認証リクエストを開始する。
- MPはエンドユーザを認証し、指定されたグループにエンドユーザがメンバーシップを所有しているか認証し、認証レスポンスをRPに返す。
- RPは認証レスポンスを検証する。
関連資料
- OpenID Authentication 2.0
- http://openid.net/specs/openid-authentication-2_0.html
- mixi OpenID spec
- http://developer.mixi.co.jp/openid/spec
著者
Hiroyuki OYAMA
Akira Sannoh
mixi, Inc.