4

誰もこれを行う方法についての手がかりを持っていますか? 私は基本的に、「Connect With Google」の戦略を OpenID から OAuth に置き換えようとしています。課題は、ユーザーが新しい OAuth スキームでサインインするときに、古いユーザー (Google オープン ID 上のユーザー) を識別することです。

オープンID戦略がそれをキャプチャするため、主キーとして電子メールアドレスに依存する実用的な実装があります。問題は、OAuth フローでメールを要求したくないことです。理想的な値は単純に Google ユーザー ID ですが、Open ID 戦略はそれを捉えていないようです。

だから私はhttps://www.google.com/accounts/o8/id?id=AfSCwGQ4PUaidXSQddJugXKLqU5V0MrXFhJM6UHybPwのような ID トークンを開き、そこから Google ID を取得できるかどうかを理解しようとしています。

更新: この移行を行うことになった方法をここで説明しました - http://softwareas.com/migrating-user-accounts-from-google-openid-to-google-oauth-to-google-plus

4

2 に答える 2

4

現在、ユーザーに別の承認ページが表示されないようにする戦略は用意されていません。

ただし、OAuth1ベースのハイブリッドフローを実行してすべてのレガシーコードをサーバーに追加するのではなく、単に電子メールアドレスを関連付けて、OAuth2ログインに移行することをお勧めします。私はあなたが通常アカウントの回復のためにそれを望んでいるのであなたが電子メールアドレスを尋ねることになる大多数のサイトのようであると仮定します。署名されたパラメーターの1つとしてOpenIdから電子メールアドレスを取得していることを確認してください。

次に、userinfo.emailスコープとOAuth2 https://developers.google.com/accounts/docs/OAuth2Loginを使用すると、開発者の負担を軽減して移行できるようになります。

さらに、OpenIDConnectのサポートを追加中です。これは、login_hintのパラメーターをサポートしているため、認証URLに&login_hint = bob@gmail.comを追加すると、適切なアカウントに承認が転送されます。これは現在文書化されていませんが、試してみると役立つ場合があります。ユーザーのブラウザは、いくつかのアカウントでGoogleにログインしている可能性があり、適切なアカウントを取得しようとしています。これは単なる「ヒント」であるため、OAuth2フローから取得した電子メールを常にチェックして、一致することを確認してください。

ユーザーは引き続きOAuth2の再認証を行う必要がありますが、将来的にはこの再認証をスキップする予定です。重要な点は、OAuth2の使用を計画することです。近いうちにシームレスな移行を実現し、サポートされているプロトコルを使用できるようになることを願っています。

于 2012-12-20T20:25:47.983 に答える
3

Google はOpenID の有向識別子を使用します。これは依存者ごとに一意であり、ユーザーの相関可能な識別子を隠すように明示的に設計されています。簡単に言えば、特定の Google OpenID に対応する Google ID を取得する方法はありません。

ただし、1 つのオプションは、Google のOpenID+OAuth ハイブリッドフローを使用することです。これにより、通常の OpenID フローの一部として OAuth トークンを取得できます。これを使用して、OAuth2 ログインAPI からユーザーの ID を取得し、既存のアカウントに関連付けることができます。既存のすべてのユーザーに対してこれを行ったら、OAuth2 ログインを直接使用するように切り替えます。

もちろん、このアプローチの秘訣は、すべてのユーザーを再度ログインさせて、新しいフローに送信できるようにすることです。それは、アカウントの移行をどれだけ待つか、既存のユーザーに電子メールを送信して再度ログインするように促すかどうか (パスワードの強制リセットと同様) にかかっています。

于 2012-12-19T16:27:10.927 に答える