0

SMFユーザーアカウントに基づいて独自のOpenIDエンドポイントを実装しようとしています。私は自分のコードをphpMyOpenIDといくつかのSMF認証コードに基づいています。

これまでのところ正常に動作します。エンドポイントを使用して、任意のサイトにログイン/登録できます。SMFにログインしていない場合は、ログインを要求され、そのSMFログインが成功すると、SMFはそれを受け入れます。

ただし、異なるSMFログイン間で違いはないようです。つまり、別のユーザーが、サイトXでエンドポイントを使用しようとし、SMFアカウントでログインし、サイトXのユーザーアカウントにアクセスしたと報告しました(以前にそのサイトでOpenIDエンドポイントを登録しました)。

どういうわけかSMFログインを送信するか、SMFログインごとになんらかの方法で一意にする必要があると思います。私がしなければならないことはおそらく些細なことなので、私はここでSOについて尋ねると思いました-おそらく、修正する必要のあることがもっとあるかもしれません。

ご覧になりたい場合は、コード(PHPのみ)は次のとおりです:http: //github.com/albertz/smf-openid-server

または、SMFログインごとに一意にするために何をする必要があるかを説明してください。

私が計画しているもう1つのプロジェクトは、マルチプレイヤーC++ゲームのOpenIDクライアントです。ホスティング業者は、OpenIDを介して認証できる人からのログインのみを許可するオプションがあります。また、特定の人だけがログインできるようにしたいと思います。OpenIDログインに基づいて一意の文字列を取得する一般的な方法は何ですか?この場合、私はまたはのようなものを考えhttp://{smf-openid-endpoint}/{smf-user}ましhttp://www.google.de/profiles/{google-user}た。そのような文字列を取得するための標準的な方法は何ですか?

この他の質問は私の主な質問に関連しているかもしれないと思うので、私はそれをここにも置いています。


関連する質問も参照してください:識別子のURLは一意ですか?異なる用語は何ですか?

4

1 に答える 1

1

私が受け取っているエンドユーザーからの最初のリクエストはcheckid_setupのようです。その応答で、フィールドに一意のURL(質問で一意の文字列と呼んでいるもの)を指定できますopenid.identity

私は今私のコードでそれをしました、そしてそれはうまくいくようです。つまり、一般的なOpenIDエンドポイントURL(たとえば、SourceForge)を入力すると、質問で提案した方法で自動的に拡張されます。

2番目の質問に答えるには、検証済みの識別子URL自体が一意であるように思われるため、これを使用できます。これにより、これは時々不可解に見えることがあります(たとえば、Googleの場合、それは単なるハッシュです)。したがって、これを内部的に使用して、ユーザーごとに異なるものにすることができます。グラフィカルな表現のために、OpenID認証から取得する必要がある実際のユーザー名またはメールアドレスを表示できます。

于 2010-07-16T00:09:01.313 に答える