web-dev-qa-db-ja.com

OAuth2を使用して複数のサイトにシームレスなログインを構築するにはどうすればよいですか?

質問は確かに少しリーディングですが、私が尋ねる意味は次のとおりです。

ユーザーがサイトXにログインする場合、サイトYに自動的にログインする方法はありますか?サイトYはサイトXのOAuth2サービスを介したシングルサインオンを利用しているため、サイトYを介したログインはサイトXにログインしますが、その逆はできません(つまり、サイトXを介したログインはサイトYのセッション/ Cookieを提供しません) )

ログインの障壁を最小限にしたいとしましょう。1つのダイアログ、確認、またはポップアップなしでユーザーをサイトYに認証させることができれば、それは理想的です。

たとえば、Stack Exchangeを見てみましょう。プログラマーSEのセッションCookieが期限切れになったが、StackOverflowのCookieは期限切れになった場合、どのようにして自動的にログインしますか?

例えばこの!


私が考えた「解決策」は次のとおりです。

サイトXは、暗黙的な付与によるサイトYの許可を許可するように構成されているため、ユーザーは許可を確認する必要がなくなります。サイトX経由でのログイン時に、非表示/非表示のモーダルをsiteY.com/oauthに開きます。これにより、ユーザーが自動的に認証され、セッションCookieが保存されます。サイトYに移動すると、Cookieが以前に作成されたため、ユーザーは単にセッションを続行します。

それは理にかなっていますか?

5
Julian H. Lam

OAuth2を使用して同じ機能を作成しました。おそらく、サイトYがサイトXに自動的にログインするために使用している方法と同じ方法を使用します。サイトXがaccessTokenを渡すことができるエンドポイントをサイトYに作成してみてください。次に、サイトYは、サイトXから渡されるaccessTokenを検証し、accessTokenが有効な場合はセッションを作成します。お役に立てれば。

1
Anthony