[我试图弄清楚我的服务器如何检查用户以前是否已经通过某个第三方身份提供商(例如:Facebook)通过SSO身份验证登录。
JWT documentation,有两个主张对我很重要:
iss
-“ iss”(发布者)声明标识了发布JWTsub
-“ sub”(主题)声明标识的主体是JWT的主题。如果现有用户随后再次通过Facebook登录,我可以保证这两个声明是相同的吗?换句话说,我可以将这两个值存储在数据库中,当用户再次通过Facebook登录时,我可以查询这些值并确认他/他已经存在吗?
作为比较,我知道SAML使用的联合身份验证ID对于每个用户始终是一致的。 OpenID Connect是否有类似的东西?
将OAuth用户ID存储在数据库中是一种非常标准的技术,尽管并非所有提供程序都基于标准:
用于识别用户的另一种方法是在验证令牌后将令牌发送到用户信息端点,以获取电子邮件,然后将其与电子邮件上的应用程序数据进行匹配。当用户已经存在并且您正在更改他们的登录方式时,这很有用。
某些提供商可能会为每个应用程序发布不同的用户ID,尽管这种情况并不常见-值得测试。
就支持多个发行人而言,您有2个主要选择: