【问题标题】:Question on OpenID Connect, Saml and OAuth关于 OpenID Connect、Saml 和 OAuth 的问题
【发布时间】:2020-05-28 11:17:51
【问题描述】:
- 我们当前的产品支持基于 SAML 和 Oauth2.0 的身份验证。
- 客户拥有 Azure AD 并希望使用 Open ID 连接进行身份验证。
身份验证将主要用于 API 调用,客户系统将调用我们产品中的 API。
以下是问题
- 我们可以在 Web 服务中使用 SAML 进行身份验证吗
- 产品从 Oauth2.0 升级到基于 Open ID 的身份验证需要进行哪些更改。
【问题讨论】:
标签:
oauth-2.0
openid-connect
saml-2.0
【解决方案1】:
不,您不能使用 SAML 调用 Web 服务,即 REST API。
REST API 需要 JWT,而 SAML 生成 SAML 令牌。
有一个 SAML 配置文件(不记名令牌)允许您将 SAML 令牌换成 JWT,但尚未广泛实施。
【解决方案2】:
OAuth2 是一种协议,它允许软件应用程序(称为客户端)获取访问令牌以代表用户调用 API。
作为该协议的一部分,授权服务器需要对用户进行身份验证(以确保它授权对正确资源的访问)。
授权服务器可以通过验证用户的凭据(用户名和密码、MFA 令牌等)来执行此操作,也可以将其委托给另一个身份提供者。在后一种情况下,SAML2 协议是一种将身份验证委托给外部身份提供者的常用协议。
OpenID Connect 是 OAuth2 之上的一个扩展,它为客户端提供一个 ID 令牌,告诉它用户的实际身份(例如,访问令牌不一定包含用户名)以及他们何时登录。它还提供了一些会话管理,如注销等。
如果您的应用程序使用 OAuth2 标准库,它可能已经支持 OpenID Connect。您的授权服务器是否支持基于 SAML 的联合取决于您使用的产品。