Kestrel使用Microsoft.AspNetCore.Authentication.与多个用户协商



Microsoft.AspNetCore.Authentication.Negotiate文档在这里介绍了如何将Kestrel配置为使用Windows身份验证:

Microsoft.AspNetCore.Authentication.Negotiate组件执行用户模式身份验证。必须添加服务主体名称(SPN(到运行服务的用户帐户,而不是机器帐户。在中执行setspn-S HTTP/myservername.mydomain.com myuser管理命令shell。

这很好用。但它并没有解释如果有多个应用程序在不同的用户下运行该怎么办。如果我尝试执行setspn -S HTTP/myservername.mydomain.com myuser; setspn -S HTTP/myservername.mydomain.com myuser2,我会得到错误Duplicate SPN found, aborting operation!

我试图在注册SPN(setspn -S HTTP/myservername.mydomain.com:5000 myuser(时使用该端口,但该注册似乎被忽略了。

是否不可能在不同用户的同一服务器上运行两个具有windows身份验证的asp.net核心应用程序,或者我必须以不同的方式注册?

服务主体名称在Active Directory中必须是唯一的,并且只能与单个服务帐户关联。

SPN是根据它们连接的主机名确定的,因此

https://foo.bar.com相当于https://foo.bar.com:8234/baz

为了完整性,如果foo.bar.com是CNAME记录,浏览器实际上将使用规范a记录(例如,foo.bar.com=>srv1-ny-web.corp.bar.net在搜索SPN时将使用后者(。

您有两种选择:在单独的(子(域上运行,或者对两者使用相同的帐户。对两者使用相同的帐户与使用机器帐户相同。为了获得更多相似性,请使用gMSA帐户,这样您就不必管理密码。

相关内容

  • 没有找到相关文章