3

Google のOpenID+OAuthプロトコルを実装しようとしていますが、openid.realm にワイルドカードが含まれていると機能しません。

openid.realm: http://*.example.com
openid.ns.oauth = http://specs.openid.net/extensions/oauth/1.0
openid.oauth.consumer = www.example.com
openid.oauth.scope = https://www.googleapis.com/auth/userinfo.profile

OpenID プロセスは期待どおりに機能しますが、OAuth 拡張機能は黙って無視されます (応答に request_token がなく、エラーもありません)。

ドキュメントによると、これはサポートされているようです:

自動化されたインターフェイスを使用してドメインを登録します。登録されたドメインは、OpenID で使用されているレルム パラメータと一致している必要があることに注意してください。たとえば、ドメイン「www.somedomain.com」は「http://*.somedomain.com」のレルムと一致します。

(コールバックが request_token パラメータを受け取る)のレルムで動作しhttp://www.example.comますが、既存のユーザーが再度サインインできなくなるため、レルムを変更することはできません。

私は何を間違っていますか?

4

2 に答える 2

0

consumer、ワイルドカードではなく、実際のドメイン名である必要があります。また、*.example.comのサブドメインを指定しexample.comます。example.comと一致していませんhttp://*.example.com

Goggle のドキュメントは不明ですが、ワイルドカード ドメインで OpenID+OAuth を使用するには、Web サイトを Google に登録する必要がある場合があります。ご覧のとおり、JohnSはワイルドカード ドメインを使用して OpenID+OAuthを取得できましたが、セットアップとの文書化された違いはありません (ネームスペース エイリアスとしてのex2代わりに使用する以外ouathは重要ではありません)。

于 2013-05-24T17:01:16.743 に答える
-1

あなたの問題は、ワイルドカードオプションを使用した openid.realm に関するものです。

認証された領域。

エンド ユーザーが信頼するよう求められているドメインを識別します。(例: "http://*.myexamplesite.com") この値は、 openid.return_to で定義されたドメインと一致している必要があります。このパラメータが定義されていない場合、Google は openid.return_to で参照されている URL を使用します。

realm の値は、Google フェデレーション ログイン ページで使用され、ユーザーが要求しているサイトを識別します。また、Google から返される永続的なユーザー ID の値を決定するためにも使用されます。

注: OpenID と OAuth の両方を別々に使用している場合、OpenID レルム パラメータ値が OAuth コンシューマ パラメータ値と一致する限り、同じドメイン登録を使用できる場合があります。値が一致しない場合は、OpenID レルム値と一致するドメインを再登録するか、レルムの値を変更してください。ただし、OpenID を持つ既存のユーザーがいる場合、レルムを変更することは実行可能なオプションではない可能性があります。

OAuth 拡張に関するもう 1 つの重要な点:

これは通常、DNS ドメイン名です。realm の値と一致している必要があります (たとえば、realm = example.com および ext2.consumer = "www.example.com"、または realm = "http:// * . somedomain.com" および ext2.consumer = ") www.somedomain.com")。

于 2013-05-28T09:57:50.030 に答える