具有多个服务 SPN 的客户端,是否可以有意将客户端限制为特定服务? kerberos 和/或 spnego

Client with multiple Service SPNs, can client be intentionally limited to certain service? kerberos and / or spnego

我已经正确配置了 Active Directory kerberos 和 SPNEGO,但让我困惑的是如何设置服务 SPN 以仅允许某些域用户访问某些服务。例如,

HTTP/server.domain.com@DOMAIN.COM

上面的 SPN 是客户端(浏览器、Java 等)如何与其想要访问的服务通信的最常用的基本示例。

用户 A 可以使用该 SPN 访问绑定到该 SPN 的服务。这也意味着用户 B 也可以使用该 SPN 来访问该服务。如果我想确保用户 B 即使知道 SPN 也无法访问该服务怎么办?到目前为止,我还没有找到限制某些域用户服务的方法

第二种情况更糟,我有两个不同的服务 运行 并且都有自己的 SPN,如下所示

SPN1 = HTTP/server1.domain.com@DOMAIN.COM
SPN2 = HTTP/server2.domain.com@DOMAIN.COM

我有两个用户,user1 和 user2。我只希望 user1 访问服务 1,并且只希望 user2 分别访问服务 2。但这似乎几乎不可能这样做,因为两个客户端在同一个活动目录中都是合法的,并且可以向上述任何 SPN 请求服务票证。我真的很困惑。

感谢任何指点或指导。

谢谢。

Kerberos 用于身份验证

应该有一些其他服务可以授权决定允许哪些服务给谁。

关于 WebSphere,请查看 Authorization Providers

https://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/csec_jaccauthorization.html

SPN只是一个前端服务名称,不会用于授权。 最终用户的 AD 主体名称将用于授权,而不是 SPN。 在大多数情况下,所有用户的 SPN 都是相同的(如果前面有负载均衡器等,它可能不止一个 SPN)。 希望这对您有所帮助/有意义。