読者です 読者をやめる 読者になる 読者になる

誰にも頼まれてないのに次世代Identifier用語集を勝手に定義してみた

前口上

最近、OpenID系のお仕事をしてたわけですが、OpenIDではなんちゃらIdentifierってのが多すぎて、はっきりいってわけわかんないです。
というか、仕様書に書いてあるIDの定義を読むと、なぜだかソワソワ、イライラしてくるのは僕だけ?

せっかくなので、その原因を自分なりに考えてみます。

OpenID2.0で定義されてるID達

まずは、ソワソワ/イライラの対象を整理してみます*1

  • (A)User-Supplied Identifier
  • (B)Claimed Identifier
  • (C)OP-Local Identifier
  • (D)OP Identifier
(A)User-Supplied Identifier

ユーザが入力したID。入力したものかどうかを表す修飾語的なものなので、(A)かつ(B)とか、(A)かつ(C)とか、(A)かつ(D)、というのもあり。
"User-Supplied"という修飾語のところだけ重要。
つか、こんなのを仰々しく用語定義する必要はあるんでしょうか。(B)〜(D)と同列のなにやら具体的な存在としてのIDと勘違いして混乱してしまったんですが。

(B)Claimed Identifier

ユーザが「これ、おれのIDだかんね!」と主張するID。
主張してるかどうか*2だけが決めてなので、OPとは無関係な独自URLでもいいし*3、とあるOPが発行してくれるOP-Local Identifierだって、"Claimed"になりうる。

(C)OP-Local Identifier

とあるOPが内部的に使用するID。内部的に使用しつつ、ユーザに開示してもいい。
とりあえずOPがOP上の処理で対象ユーザをユニークに特定するときはこのID使ってるよ、ってとこだけが重要。

(D)OP Identifier

とあるOP自身を指すID。*4 *5

なんで気持ち悪いんだろう?

うーんうーん。

気持ち悪く感じるのは、上記のオーソライズされたID群が、OpenIDの世界におけるIDという概念をMECEにカバーしきっていない(少なくとも自分はそう感じる)、という点から来てるんじゃないかと思ってきました。


なので、勝手にオレオレID群定義をして、ちょっと自分を慰めてみます。

OpenID仕様:オレオレ用語集

  • 誰のIDか、という観点における用語。すべてのIDは以下のいずれかに分類される。
    • OP Identifier
      • とあるOPを識別するID。(これはオリジナルのまま)
    • User Identifier
      • とあるユーザを識別するID。OpenID仕様に基づいてどこか1つ以上のOPによって認証処理が可能でなければならない。
  • User Identifierを誰が提供しているか、という観点における用語。すべてのUser Identifierは以下のいずれかに分類される。
    • OP-Local User Identifer
      • OP上でOPの都合のために使われるUser Identifier。OPの外に開示してもよい。あくまで管理はOP側の責務。(オリジナルのOP-Local Identifierを改名)
    • Third-Party User Identifier
      • OP, User以外の第三者によって提供されるUser Identifier。
    • Self User Identifier
      • ユーザ自身が管理する独自のUser Identifier。
  • ユーザへの開示/未開示、という観点における用語。すべてのUser Identifierは以下のいずれかに分類される。
    • Explicit User Identifier
      • ユーザに開示されている利用可能なID。
    • Implicit User Identifier
      • 処理の途中で過渡的に使用されるなど、ユーザに対して明示されないID. ユーザに開示されないOP-Local User Identifierなどが該当する。
  • 使用頻度、という観点における用語。
    • Regular User Identifier
      • 通常、主に使用されるユーザID。
    • none
      • 補集合に対する用語定義は特に意味がないので省略。
  • シーケンスにおいてどこで使用されるか、という観点における用語。
    • User-Request Identifier
      • リクエストで指定していることを指す。
    • Discovered Identifier
      • ディスカバリで発見されたID.
    • Delegated Identifier
      • User-Request Identifier ≠ Discovered Identifier の場合に、発見されたDiscovered Identifierを特にこのように呼ぶ。


とりあえず、こんな感じだったら納得度が高いんだけどなぁ。個人的には。

まとめ

OpenID2.0の用語集がなんか気持ち悪い。

オレオレ用語集を策定する。

だんだん気持ちよくなってくる。(´Д`;)ハアハア ←今ココ

OpenID3.0でオレオレ用語が正式に採用になる。

Identity管理のご意見番として君臨。

アフィリエイトでがっぽがっぽ。

(゜Д゜)ウマー

言い訳

OpenIDを知らない人は、ここに書いてることはたぶんどっか間違ってると思うので鵜呑みにしないようにご注意を。
OpenIDをよく知ってる人は、つっこみ大歓迎です。

*1:これだけだったかな?

*2:どこかのOPで認証可能であること、という条件はいわずもがな。

*3:きちんとOPをDiscovery可能になってれば。

*4:OP Endpoint URLがそのままOP Identifierでもいいし、間にYadisとかのDiscoveryの仕組みを挟んでもいい。けど、後者はちょっと冗長な気がするなぁ。

*5:ユーザの特定とか認証処理はOP上でやるよ!という場合は、User-Supplied IdentifierとしてOP Identifierを指定してシーケンスを開始する。これはOpenID2.0から可能になってる。