1

我已经正确配置了 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 请求服务票证。我真的很困惑。

我很感激任何指示或指导。

感谢您。

4

1 回答 1

2

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)。希望这对您有所帮助/有意义。

于 2018-08-08T20:28:14.043 回答