仕様
mixi OpenID について、サービスの提供を終了させて頂く事となりました。
mixi OpenID をご利用されている外部サイト様は、下記のお知らせをご参照ください。
概要
mixi OpenID は mixi 内のユーザー情報を外部サイトでの認証に使用するためのサービスです。この文章では mixi OpenID の仕様について説明します。
はじめに
mixi OpenID は mixi 内のユーザー情報を、OpenID Authentication 2.0 (以下 OpenID 2.0) に準拠する形で、外部サイトでの認証に使用するためのプロトコルです。マイミクシィやコミュニティという馴染み深いモデルで、ユーザーに Web 上のアクセスコントロールを提供します。
mixi OpenID では、mixiユーザー個人のアイデンティティを外部サイトに証明する
- ミクシィ認証
mixi内の関係性を外部サイトに証明する
- マイミクシィ認証
- コミュニティ認証
の3種類の認証を提供します。さらに、ユーザーが許可した場合に限り、外部サイトへログインするユーザーのニックネームをあわせて提供します。
マイミクシィ認証、コミュニティ認証を使用することで、外部サイトは次のようなサービスを実現できます。
- 自分のマイミクシィのみコメントできるブログ
- 特定のコミュニティ参加者だけがアクセスできる掲示板
認証
mixi OpenID における認証全体の流れについては、OpenID 2.0 仕様に準拠しているため、ここでは説明を省略します。
OpenID Provider (以下 OP) としての mixi は、仕様上のオプショナルなもののうち以下を実装しています。
- Stateless モードを実装しているため、アソシエーションの確立が省略できます
- Immediate モードを実装しているため、認証をリクエストする際に openid.mode に checkid_immediate を指定できます
外部サイトは OpenID 2.0 に対応した Relying Party (以下 RP) として、mixi 内のユーザー情報を認証に使用します。なお、OP と RP 間のアソシエーションの確立処理は、単位時間あたりの実行回数に制限があります。RP は可能であればアソシエーションをキャッシュするようにして下さい。
ミクシィ認証
ミクシィ認証は、mixi ユーザ個人のアイデンティティを RP に証明します。
RPは、Yadisプロトコルを用いて、mixiの OP Identifier
https://mixi.jp
に対して discover をおこない、取得した OP Endpoint URL に認証を要求します。OPは、認証を要求しているユーザが mixi ユーザであるかをチェックして、応答を返します。
認証が完了した際に応答に含まれる OP-Local Identifier, Claimed Identifier は共に
https://id.mixi.jp/[ログインしたユーザーの ID]
となります。
なお、ブラウザによる https://id.mixi.jp/[ユーザー ID]
への通常のアクセスは、http://mixi.jp/show_friend.pl?id=[ユーザー ID]
にリダイレクトされます。
マイミクシィ認証
マイミクシィ認証は、mixi 内でユーザーが誰と友人であるかを、RP に証明します。
RPは、特別な Claimed Identifier
https://id.mixi.jp/[ユーザー ID]/friends
あるいは
http://mixi.jp/show_friend.pl?id=[ユーザー ID]
を指定して認証を要求します。OPは、ログインを要求しているユーザと、mixi内で [ユーザー ID] で示されるユーザーとが、友人同士であるかをチェックして、応答を返します。
認証が完了した際に応答に含まれる OP-Local Identifier はミクシィ認証と同様に https://id.mixi.jp/[ログインしたユーザーの ID]
ですが、Claimed Identifier が
https://id.mixi.jp/[ユーザー ID]/friends/[ログインしたユーザーの ID]
となります。
なお、ブラウザによる https://id.mixi.jp/[ユーザー ID 1]/friends/[ユーザー ID 2]
への通常のアクセスは、http://mixi.jp/show_friend.pl?id=[ユーザー ID 2]
にリダイレクトされます。
コミュニティ認証
コミュニティ認証は、mixi 内でユーザーがどのコミュニティに所属しているかを、RP に証明します。
RPは、特別な Claimed Identifier
https://id.mixi.jp/community/[コミュニティ ID]
あるいは
http://mixi.jp/view_community.pl?id=[コミュニティ ID]
を指定して認証を要求します。OPは、ログインを要求しているユーザが、mixi内で [コミュニティ ID] で示されるコミュニティに参加しているかをチェックして、応答を返します。
認証が完了した際に応答に含まれる OP-Local Identifier はミクシィ認証、マイミクシィ認証と同様に https://id.mixi.jp/[ログインしたユーザーの ID]
ですが、Claimed Identifier が
https://id.mixi.jp/community/[コミュニティ ID]/[ログインしたユーザーの ID]
となります。
なお、ブラウザによる https://id.mixi.jp/community/[コミュニティ ID]/[メンバ ID]
への通常のアクセスは、http://mixi.jp/show_friend.pl?id=[メンバ ID]
にリダイレクトされます。
エイリアス
mixi OpenID では、ユーザー ID の代わりに、ユーザー自身が設定したエイリアス (別名) を使用できます。
エイリアスを設定することで、ユーザーは https://id.mixi.jp/[ユーザー ID]
の [ユーザー ID] 部分を、36文字以内の英小文字・数字・アンダースコアで構成される任意の文字列に変更することができます。
エイリアスは mixi OpenID の全ての認証で使用されます。ログインするユーザーがエイリアスを指定している場合、以下の URL が新たに Claimed Identifier として使用できるようになります。
https://id.mixi.jp/[ログインするユーザーのエイリアス]
https://id.mixi.jp/[ユーザーID or エイリアス]/friends/[ログインするユーザーのエイリアス]
https://id.mixi.jp/community/[コミュニティ]/[ログインするユーザーのエイリアス]
さらに、エイリアスを設定しているユーザーの友人は、以下の Claimed Identifier を新たに使用できます。
https://id.mixi.jp/[エイリアス]/friends
OP はエイリアスを設定しているユーザーについては Claimed Identifier としてエイリアスを含む URL を優先的に返すようになります。ただし、ユーザー ID が明示的に指定された場合は、エイリアスは使用されません。
ユーザーが入力した Identifier | OPが返す Identifier |
---|---|
https://mixi.jp/ | https://id.mixi.jp/[エイリアス] |
https://id.mixi.jp/[エイリアス] | https://id.mixi.jp/[エイリアス] |
https://id.mixi.jp/[ユーザー ID] | https://id.mixi.jp/[ユーザー ID] |
なお、エイリアスを設定した場合も、通常のユーザーID (数字) によるログインは可能です。
ニックネーム
mixi OpenID が提供する全ての認証は、OpenID Simple Registration Extension 1.1(以下 SREG1.1)および OpenID Attribute Exchange 1.0(以下 AX1.0)を利用した、mixi 上のニックネームの引渡しをサポートしています。
RPは認証を要求する際に
- SREG1.1の nickname 属性
- AX1.0の Alias/Username 属性
http://axschema.org/namePerson/friendly
のどちらかに対する Fetch Message を含めることで、OP にニックネームの引渡しを要求します。
OPは、ユーザが許可している場合のみ、ニックネームを応答に含めて返します。
注意
本ドキュメントは 2008/08/20 時点での情報です。開発中のため、予告なく仕様が変更される場合があります。