在OAuth2流中,我们可以将身份验证委托给Windows SSO吗



我们的应用程序使用内部OAuth2服务器。现在,我们想为我们的应用程序使用Windows SSO,但不需要它们来更改任何内容:它们仍然会到达我们的OAuth2服务器以获取访问令牌,并且身份验证部分将委托给Kerberos(如果我理解正确的话,Windows会使用Kerberos(。

有办法做到这一点吗?

这是一个标准设置,只需要在授权服务器(AS(中更改配置即可,应用程序中的代码更改为零。

最常见的:

  • AS可能托管在云中
  • 它将把浏览器重定向到本地身份提供程序(IDP(
  • IDP可以连接到Active Directory

当用户未加入工作域时,您可能还需要一个回退选项。请参阅本Curity指南,了解示例和一些需要考虑的基础设施因素。

如果AS在内部,它甚至可以通过LDAP数据源建立直接的Kerberos连接,尽管首选的体系结构是单独的IDP。

当然,您需要一个支持建立这种连接的AS,因此需要检查供应商文档。

请求流

Kerberos一直是概念上最简单但理解最深刻的协议——这里有一点总结:

  • 您的应用程序将进行标准的OpenID Connect授权重定向到AS
  • AS然后可以向用户呈现认证选择屏幕,除非只有一个选项
  • 或者,应用程序可以发送acr_values查询参数来说明要使用哪种身份验证方法
  • 然后,AS将浏览器重定向到使用"Windows SSO验证器"的下一个处理阶段
  • 重定向到Windows SSO验证器不必使用OpenID Connect,它可以是任何特定于供应商的HTTP请求
  • 浏览器将通过连接到AD自动发送加密的Kerberos票证-此操作的先决条件可能是URL中的域位于最终用户计算机上的本地Intranet区域中
  • Windows SSO验证器需要能够解密此凭据,这通常需要配置服务主体名称
  • 一旦Kerberos票证被解密,验证器将通过其标准LDAP端点与Active Directory数据源建立LDAP连接,以验证收到的票证

最新更新