问题标签 [spn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kerberos - 为什么可以使用 setspn 创建无效的服务主体名称 (SPN)
今天,我能够使用 setspn 命令创建完全随机且无效的 SPN,但我不明白为什么允许使用无效的 SPN。例如:
setspn -s RandomSvc/randomname.random.random valid_user
在我的域中为 valid_user 成功运行(我在此处替换实际用户名,但该用户是域中的有效用户)。
然后,如果我这样做setspn -l valid_user
,它将列出此无效条目。
我想没有人能真正连接到这个服务,因为它不存在。但是,如果我尝试添加一个有效的 SPN,但输入错误,我不会注意到它,直到我的应用程序给我一个错误。那么为什么setspn不做任何验证(除了用-s检查重复)?
websphere - 是否可以配置 SPENGO 而与完全限定的主机名无关
我已经为 WebSphere 配置了 SPENGO,并且当前的 SPENGO 对于完全限定的主机名 appserver.robo.com 运行良好,我想要一个 SPENGO 配置,它可以同时适用于 appserver.robo.com/productName 和 appserver/productName。
有没有这样的配置是可能的?
kerberos - Kerberos 和多个 SPN
我设法为 1 台服务器设置了 Kerberos 身份验证,并且运行正常。现在我有一个项目,我必须将另一台服务器添加到 Kerberos 配置中,如下所示:
1) 广告服务器
2) 运行服务的 server1
3) server2 将运行相同的服务
所以我执行了 setspn 命令以将两者都分配给单个“spn”用户:
setspn -s serviceX/server1.domain.com@DOMAIN.COM spn
setspn -s serviceX/server2.domain.com@DOMAIN.COM spn
然后我执行了命令 ktpass:
ktpass -princ serviceX/server1.domain.com@DOMAIN.COM -ptype KRB5_NT_PRINCIPAL -crypto AES256-SHA1 -mapuser serviceX\spn -out C:\keytab +rndPass
接下来我应该怎么做才能让它发挥作用?如何为 server2 执行 ktpass?当我为 server2 尝试相同的命令时,我收到警告:
警告:无法将 UPN serviceX/server2.domain.com ptype 1 vno 10 etype 0x12 kinit 设置为“serviceX/server2.domain.com”将失败。
你们如何为相同的服务但在不同的服务器上设置 kerberos 身份验证?您是否创建 2 个 spn 用户和 2 个 keytab?我认为我需要将所有内容都放在 1 个 keytab 中,因为服务需要它。有什么帮助吗?
sql-server - 为什么我的 Windows 服务只有在 SQL Server 服务在本地系统帐户下运行时才与数据库建立连接?
我的 Windows 服务使用集成身份验证并在本地系统帐户下运行,并得到以下异常。
目标主体名称不正确。无法生成 SSPI 上下文。
SQL Server 服务在域管理员用户下运行,例如“域\管理员”。如果我将 SQL Server 服务更改为在本地系统帐户下运行,则它可以修复上述错误。
谁能解释为什么会这样?我们有一个 InstallShield 向导,它在客户端安装我们的应用程序,我不知道我们如何通过向导处理这种行为。此外,更改 SQL Server 服务的用户也不现实,因为客户端可能不允许这样做。
注意:一旦我的 Windows 服务正常运行并且我恢复在管理员帐户下运行的 SQL Server,我的服务运行正常。我猜有一些权限设置为本地系统帐户。
在此之前,我运行了 Kerberos,它生成了以下脚本来运行并修复了该问题。在此之后,不需要更改 SQL Server 服务的用户。
SetSPN -d "MSSQLSvc/FQDN" "域\机器$"
SetSPN -s "MSSQLSvc/FQDN" "域\管理员"
请解释为什么会发生这种情况以及处理这种情况的最佳方法是什么?
kerberos - Windows 身份验证 401 错误,SPN 到服务帐户
我正在苦苦挣扎,希望你能帮助我。
场景:我在测试服务器上编写了一个 Web 应用程序,一切正常。我将完成的应用程序移动到实时系统,如果在 IIS 上启用了 Windows 身份验证,我会收到 HTTP 401 错误。我通过在服务器名称上设置 SPN 解决了这个问题,例如
setspn -a http/contoso contoso
但它需要与我的服务帐户一起使用。我为服务帐户设置了 spn,例如:
setspn -a http/contoso.com mydomain\serviceaccount
setspn -a http/contoso mydomain\serviceaccount
应用程序池作为 mydomain\serviceaccount 运行。在 Active Directory 中为此帐户设置了 Kerberos 委派。但仍然得到 401 错误。出于测试目的,服务帐户在此服务器上具有管理员角色。
authentication - Kerberos 与 DNS 的关系
Kerberos 主体通常定义为role/host@REALM
. 这里的主机字段是如何使用的?
它是否强制只有特定主机才能在kinit
运行时获得 Kerberos 票证?
- 如果是,那么设置正确的 DNS 是有意义的。
- 如果没有,主机名有什么用?
我xyz/garbage@REALM
在kadmin.local
面板中创建了一个具有名称的主体,下载了 keytab 并将其分发到不同的主机。我尝试kinit
使用这个 keytab 并且它有效。
这是正确的行为吗?如何检查我的 Kerberos 是否使用 DNS?
active-directory - 具有多个服务 SPN 的客户端,是否可以故意将客户端限制为某些服务?kerberos 和/或 spnego
我已经正确配置了 Active Directory kerberos 和 SPNEGO,但始终让我感到困惑的是,如何将服务 SPN 设置为仅允许某些域用户访问某些服务。例如,
上面的 SPN 就像客户端(浏览器、Java 等)如何与它想要访问的服务通信的最常用的基本示例。
用户 A 可以使用该 SPN 访问与该 SPN 绑定的服务。这也意味着用户 B 也可以使用该 SPN 访问该服务。如果我想确保用户 B 即使知道 SPN 也无法访问该服务怎么办?到目前为止,我还没有找到限制某些域用户服务的方法
第二种情况更糟,我有两个不同的服务正在运行,并且都有自己的 SPN,如下所示
我有两个用户,user1 和 user2。我只希望 user1 访问服务 1,只希望 user2 访问服务 2。但这似乎几乎不可能这样做,因为两个客户端在同一个活动目录中都是合法的,并且可以向上述任何 SPN 请求服务票证。我真的很困惑。
我很感激任何指示或指导。
感谢您。
azure - 如何在 Azure Active Directory 中设置 SPN
我们正在尝试在只有 Azure AD 的环境中为 SQL SSRS 设置 SPN。如果我运行 SETSPN -S
MSCRMSandboxService/TESTCRM 域\crmtestserv
SETSPN -S MSCRMSandboxService/TESTCRM.symposium.org domain\crmtestserv 我总是收到我的帐户权限不足的消息,即使该帐户在 AAD DC 管理员组中也是如此。
那么在使用 Azure AD 时设置 SPN 的过程是什么?
sql-server - 无法生成 SSPI 上下文错误,但如果指定了 SPN 服务器名称则不会
通过 VPN 连接到远程 SQL Server 时,我遇到了这个错误。
这里的问题是,只有在字符串连接上指定了 SPN 名称时,我才能进行连接,即:“Server SPN = MSSQLSvc\MyServer.foo.bar”
- 我回顾了臭名昭著的KB811889
- 我已运行Kerberos 故障排除工具
- 我检查了 DNS 解析名称和反向解析
- 我用 setspn -l 检查了 SPN 服务器名称
指定 SPN 名称有什么区别?