我一直在使用身份验证提供程序和应用程序级别的身份验证自定义实现,但我仍然无法完全理解这两个概念。
我理解SSO,顾名思义,就是提供集中式登录体验,我可以使用一组凭据来访问多个平台。而 oauth 允许用户根据授权服务器的凭据访问资源。
如果我有一组凭证允许我访问 4 个不同的平台,那就是 SSO。但如果这4个平台允许使用谷歌进行社交登录,那么基本上是一样的吗?因为我可以使用我的单一 google 凭据访问相同的 4 个平台。
SSO 和 oauth 之间有什么区别,如果两者都可以用于使用同一组凭据提供对多个平台的访问,并且据我了解,两者都可以与某种身份验证服务器一起使用(我了解 SSO 具有集中式授权服务或其他服务)类似)?
SSO 和 OAuth 是两种不同的协议,可用于不同的目的。
SSO 是一种允许用户进行一次身份验证并访问多个应用程序的方法,而无需再次提示输入其凭据。这通常由身份提供商 (IdP) 完成,该身份提供商向用户颁发令牌,然后将令牌传递到用户想要访问的不同应用程序。
另一方面,OAuth 是一个开放的授权标准(而非身份验证)。它允许用户授予第三方应用程序访问其资源(例如数据)的权限,而无需共享其凭据。 OAuth 不提供身份验证,但它可以与其他协议(例如 SSO)结合使用,以提供无缝的用户体验。总而言之,SSO 用于验证用户身份,而 OAuth 用于授予对资源的访问权限。 OAuth 可以用作 SSO 解决方案的一部分,但它不能替代 SSO。
OIDC 建立在 OAuth2 的流程之上,因此在使用 SSO(OIDC) 时您会发现与 OAuth2 非常相似。但 OAuth 与 SSO 有很大不同,因为它只迎合授权,而不迎合身份验证。
如果我有一组凭证允许我访问 4 不同的平台,那就是SSO。但如果这4个平台允许的话 例如使用google进行社交登录,基本上是一样的吗?正如我 我能够使用我的单个 google 访问相同的 4 个平台 凭证。您在这里描述的是社交 SSO,它使用 Google Auth 服务器进行 SSO。您会发现它与 OAuth2 非常相似,因为 Google 使用了 OIDC,它是基于 OAuth2 流程构建的,正如我之前所解释的。