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

问题描述 投票:0回答:1

Microsoft.AspNetCore.Authentication.Negotiate文档说了以下有关如何将Kestrel配置为使用Windows身份验证的here

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

效果很好。但是,它没有说明如果在不同用户下运行多个应用程序该怎么办。如果我尝试执行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核心应用程序,或者我必须以不同的方式注册它吗?

c# security asp.net-core kerberos asp.net-core-3.1
1个回答
0
投票

服务主体名称在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帐户,这样您就不必管理密码。

© www.soinside.com 2019 - 2024. All rights reserved.