OAuth 2.0、OpenID Connect和SAML都是在身份验证和授权领域使用的不同协议或标准,它们各自具有自己的特点和优势。
OAuth 2.0是一个开放标准,用于授权第三方应用访问用户在某一服务提供者上存储的私有资源,而无需将用户名和密码提供给第三方应用。其优点包括更高的安全性(客户端不接触用户密码,服务器端更易集中保护),广泛的传播和采用,短寿命和封装的token,资源服务器和授权服务器解耦,以及HTTP/JSON友好等。然而,由于不同的公司可能采用不同的OAuth 2.0实现方式,因此可能会出现兼容性问题。
OpenID Connect(OIDC)是建立在OAuth 2.0协议之上的一个身份验证层标准。它通过使用JSON Web Token(JWT)为身份验证和授权提供了一个可靠的机制。OIDC采用了用户中心化的设计思路,即用户身份验证和授权的责任由专门的身份提供者承担,而不是应用程序本身。这使得用户只需使用一个身份提供者,即可在多个应用程序上进行身份认证,提供了更好的用户体验。
SAML(安全断言标记语言)是一个基于XML的开放标准,用于在主体、服务提供者和身份提供者之间传递身份验证和授权信息。SAML的优点包括高度的安全性(通过SSL/TLS协议保证数据传输的安全性),标准化(可以在任何现代网络环境中使用),以及高度可扩展性(允许系统管理员在多个安全域中共享用户信息)。SAML特别适用于大型网络环境。
通俗的说,OAuth 2.0解决了用户不需要一个系统使用一套账号密码的问题,如我们经常使用的第三方应用可以使用微信授权登入,而不需要在第三方应用注册账号密码.
更进一步,OAuth 2.0虽然解决了用户需要记住大量账号的问题,但是还存在一个问题就是用户每登入一个应用都需要让微信授权登入一次,而OpenID Connect就是解决用户一次登入后,登入其他应用时无需重复登入的问题.策略就是使用一个身份提供者保存用户首次登入的凭据,登入其他应用时首先从身份提供者里面找是否有用户登入的有效凭据,如果存在则可以直接登入(具体可以按IP或者mac识别是否在同一台设备登入),类似的第三方身份提供者如identityServer4.