我们的应用程序使用内部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连接,以验证收到的票证