我正在我的网站上使用自定义工作流程实现Facebook和Google SSO(重定向网址,在服务器端进行解析等等 - 没有javascript)我已经达到了access_token,token_type和expires_in以及来自Google的id_token和我很困惑接下来要对用户进行身份验证。 我读了一些关于授权与身份验证的内容,而Facebook和Google SSO是OAuth2,它提供授权,但不提供身份验证,据我所知,我的Web应用程序有权代表用户执行某些操作,但我不能确定用户是我认为他是谁?我的主要来源是:OAuth Authorization vs Authentication
所以,我的问题是,我该怎么办才能考虑用户登录。
谢谢
答案 0 :(得分:3)
在您的情况下,谷歌(和Facebook)是验证者。此服务只是告诉您的应用程序,尝试登录系统的用户是他想要出现的用户。
假设您通过唯一的电子邮件区分用户。 您的申请流程应该是下一个:
与facebook相同的流量。当然,您可以将此逻辑扩展为更具体的应用程序。
答案 1 :(得分:1)
SSO和OAuth是不同的。 OAuth是授权协议。 您正在处理Google和Facebook oauth。
<强>的OAuth 强>
如果是oauth,在成功验证(google / facebook)后,您将获得访问令牌。您可以使用令牌来维护用户会话。
使用此令牌用户已获得授权,现在您应该检查数据库中是否存在用户,如果是,则验证用户身份并重定向到您的应用程序。
<强> SSO 强>
SSO是用户身份验证服务。有办法实现SSO,如kerberos SSO,ADFS SSO。
答案 2 :(得分:0)
我们绝不应该使用OAuth2访问令牌进行身份验证。 详情请参阅 https://oauth.net/articles/authentication/
基于OAuth2的OpenIDConnect可用于身份验证。
Google支持OpenIDConnect https://developers.google.com/identity/protocols/OpenIDConnect
基本思想是,Google将在用户登录其Google帐户后向客户端应用程序(您的应用程序)颁发ID令牌。然后,您可以从该ID令牌中提取用户信息(例如电子邮件,唯一的用户ID)并继续登录流程。