mixi Developer Center (ミクシィ デベロッパーセンター)

下書き

下書き » 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と対話してメンバーシップ認証を実現することができる。

 

プロトコル概要

  1. 認証依存サイト(RP)は、エンドユーザの要求に応じてメンバーシップ認証プロセスを開始する。
  2. RPはユーザエージェントをメンバーシッププロバイダ(MP)にリダイレクトすることによって、メンバーシップ認証リクエストを行う。
  3. RPは通常のOpenID認証リクエストと同様のパラメータを使用してメンバーシップ認証リクエストを行う。エンドユーザのメンバーシップを認証したいグループの識別子を、主張識別子にセットして認証リクエストを行う。
  4. 認証リクエストを受け取ったMPは、エンドユーザがグループ識別子で示されたメンバーシップを所有しているか確認する。MPでのエンドユーザ認証方式とメンバーシップの表現、および認証に関連するあらゆるポリシーは本仕様の範囲外である。
  5. MPは認証が承認された表明または認証失敗のメッセージを伴って、ユーザエージェントをRPにリダイレクトする。この手続きはOpenID認証で行われる承認の表明と同じ形式で行われる。
  6. 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間のエンドユーザ認証と同じ手続きを使用する。

  1. RPはエンドユーザが入力した識別子を探索し、OP終点URLを取得する。
  2. RPはエンドユーザのユーザエージェントをOP終点URLにリダイレクトして認証リクエストを開始する。
  3. OPはエンドユーザを認証し、認証レスポンスをRPに返す。
  4. RPは認証レスポンスを検証する。
OMPのメンバーシップ認証

メンバーシップを確認したいグループ識別子は、RPにおいて事前にエンドユーザ、またはRPの管理者が指定する。

  1. RPはグループ識別子を探索し、MP終点URLを取得する。
  2. RPはエンドユーザのユーザエージェントをMP終点URLにリダイレクトして認証リクエストを開始する。
  3. MPはエンドユーザを認証し、指定されたグループにエンドユーザがメンバーシップを所有しているか認証し、認証レスポンスをRPに返す。
  4. RPは認証レスポンスを検証する。

Independent Membership Provider(IMP):

OPとは切り離され、独立したMPとしてメンバーシップ認証サービスを提供する形態。
IMP上のユーザは、任意のOPが発行したユーザ識別子をグループに分類して管理することができる。それぞれのグループにはグループ識別子が割り当てられる。RPはIMPに対してメンバーシップ認証のみを要求し、エンドユーザ認証はそれぞれのOPに要求する。
IMP上のエンドユーザ認証についてここでは明言しないが、IMPは一般的なRPとして振る舞いエンドユーザを認証することがことが望ましい。

IMPでのエンドユーザ認証

エンドユーザがIMP上でメンバーシップを管理する場合、および他のエンドユーザがそのメンバーシップを証明する場合は、それぞれのエンドユーザがIMPでエンドユーザ認証を済ます必要がある。IMPは通常のRPとしてエンドユーザが入力した識別子を持つOPに認証リクエストを発行してエンドユーザ認証を行うことができる。

  1. IMPはRPとして、エンドユーザが入力した識別子を探索し、OP終点URLを取得する。
  2. IMPはRPとして、エンドユーザのユーザエージェントをOP終点URLにリダイレクトして認証リクエストを開始する。
  3. OPはエンドユーザを認証し、認証レスポンスをRP(IMP)に返す。
  4. IMPはRPとして、認証レスポンスを検証する。

IMP上でエンドユーザ認証が完了すると、エンドユーザはグループを作成することができる。グループにはメンバーシップを定義したい他のエンドユーザのユーザ識別子を追加する。任意のOPが発行したユーザ識別子を使ってメンバーシップを定義することができる。
グループにユーザ識別子をセットされたメンバーシップを持つ別のエンドユーザが、IMP上でメンバーシップ認証を実施する場合にも、同様の手続きでエンドユーザ認証が行われる。

IMPのメンバーシップ認証

メンバーシップを確認したいグループ識別子は、RPにおいて事前にエンドユーザ、またはRPの管理者が指定する。

  1. RPはグループ識別子を探索し、MP終点URLを取得する。
  2. RPはエンドユーザのユーザエージェントをMP終点URLにリダイレクトして認証リクエストを開始する。
  3. MPはエンドユーザを認証し、指定されたグループにエンドユーザがメンバーシップを所有しているか認証し、認証レスポンスをRPに返す。
  4. 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.

このページの上部へ