Authentication 单点登录身份验证与授权
我正在使用自定义工作流(重定向URL、服务器端解析等-无javascript)在我的网站上实现Facebook和Google SSO,我在Google中访问了令牌、令牌类型和过期令牌,并且从Google也访问了令牌,我不知道下一步如何验证用户。 我读了一些关于授权与身份验证的内容,Facebook和Google SSO是OAuth2,它提供授权,但不提供身份验证,从中我了解到,通过这种方式,我的web应用程序被授权代表用户做一些事情,但我不能确定用户就是我认为的那个人?我的主要来源是: >我的问题是,我应该做些什么来考虑用户登录。 谢谢你在你的情况下,谷歌(和facebook)是认证者。该服务只是告诉您的应用程序,试图登录到您的系统的用户就是他希望出现的用户 假设您通过独特的电子邮件区分用户。 您的应用程序流应该是下一个:Authentication 单点登录身份验证与授权,authentication,oauth-2.0,single-sign-on,facebook-login,google-login,Authentication,Oauth 2.0,Single Sign On,Facebook Login,Google Login,我正在使用自定义工作流(重定向URL、服务器端解析等-无javascript)在我的网站上实现Facebook和Google SSO,我在Google中访问了令牌、令牌类型和过期令牌,并且从Google也访问了令牌,我不知道下一步如何验证用户。 我读了一些关于授权与身份验证的内容,Facebook和Google SSO是OAuth2,它提供授权,但不提供身份验证,从中我了解到,通过这种方式,我的web应用程序被授权代表用户做一些事情,但我不能确定用户就是我认为的那个人?我的主要来源是: >我的问
Facebook也是如此。当然,您可以将此逻辑扩展到更特定于您的应用程序 SSO和OAuth是不同的。OAuth是授权协议。 你正在处理谷歌和Facebook oauth OAuth 对于oauth,在成功验证(google/facebook)后,您将获得访问令牌。您可以使用令牌来维护用户会话 有了这个令牌用户被授权后,现在您应该检查该用户是否存在于您的数据库中,如果存在,则验证该用户并重定向到您的应用程序 SSO
SSO是用户身份验证服务。有一些实现SSO的方法,比如kerberos SSO、ADFS SSO。我们不应该使用OAuth2访问令牌进行身份验证。 详情请参阅 构建在OAuth2之上的OpenIDConnect可用于身份验证 谷歌支持OpenIDConnect
其基本思想是,在用户登录其Google帐户后,Google将向客户端应用程序(您的应用程序)颁发一个ID令牌。然后,您可以从此id令牌中提取用户信息(例如电子邮件、唯一用户id),并继续您的登录流程。谢谢您的回答。我不太明白,我有3个信息不能同时全部正确:1)OAuth2用于授权,而不是身份验证。2) Facebook和Google登录基本上都是OAuth2。3) Facebook和Google登录提供身份验证。所以我使用Facebook/Google登录,这是OAuth2,它不用于身份验证,但我可以使用它进行身份验证。为什么?我哪里弄错了?首先OAuth是用于授权的,例如,
google
。要登录,您需要有效的google uName并通过google帐户的身份验证,然后只有您才能从oauth获得访问令牌