当前位置: 首页 > 知识库问答 >
问题:

指定 SPN 的正确格式是什么?

左丘元徽
2023-03-14

首先,使用setspn命令为用户注册服务主体名称。

setspn-CS/dummy@abc.com dummy user

setspn-l虚拟用户

给出输出为

CS公司/dummy@abc.com

接下来,当使用 /mapUser 选项执行 ktpass 命令时,将修改用户帐户的服务主体名称,以便删除域组件。

ktpass/pass Password @ 123-out dummy . 1 . keytab-princ CS/dummy@abc.com-crypto DES-CBC-MD5 dump salt-ptype KRB5 _ NT _ PRINCIPAL desOnly/mapOp set/mapUser dummy user

setspn-l虚拟用户

给出输出为

CS/假人

以下两个命令是否正确并以相同的方式工作?

setspn-a CS/虚拟Dummyuser

setspn-CS/dummy@abc.com dummy user

在SPN中指定服务名称时,是否也必须包含域组件?你能澄清一下吗?

共有1个答案

萧嘉茂
2023-03-14

由于您没有提到,我假设您是在Windows Active Directory域环境中?我这么说是因为您示例中给出的命令“ktpass”是Windows本机的。基于此,我将假定您的Active Directory DNS域名为abc。com和Kerberos领域名称为ABC.com。

  1. 当您创建keytab时,SPN会在那时映射到用户或计算机对象(主体,用Kerberos术语来说),因此您以后不需要调整该主体的SPN,除非您将其添加为辅助SPN
  2. 帮自己一个忙,将Kerberos领域名称以大写形式放在keytab创建命令中。最好是随机化密码,这样就没有人知道了。Kerberos SSO功能可以很好地与之配合使用。Kerberos领域名称需要附加到“/mapUser”参数。我已经把你的例子修改成了一个你应该使用的更好的例子
  3. 这超出了您的问题范围,但不再使用DES加密。这在业界早就不受欢迎了。我不会再多说了,因为这不是你要问的
  4. 不要使用“setspn-a”语法在主体上添加或创建SPN,而是使用“setspn-s”作为“-s”检查重复的SPN,而“-a”没有(请参阅:“setspn-s”与“setspn-a”)
  5. 确保您完全符合SPN的主机部分(即dummy.abc.com,而不仅仅是dummy)。否则,身份验证机制可能会立即尝试NTLM而不是Kerberos,这不是您想要的
  6. 在只包含单个DNS域和单个Kerberos域的简单环境中,已经设置了Kerberos领域到DNS域的映射(在UNIX/Linux上通常由/etc/krb5.conf进行,Windows会自动处理,但如果没有,则会尝试C:\Windows\krb5.ini(如果存在)),虽然在运行“setspn-a”或“setspn-s”时不需要将Kerberos领域限定为SPN的一部分,但应该在Kerberos创建命令中这样做

所以,在你的例子中,基于我提到的所有内容,虽然你可以使用:

setspn -a CS/dummy dummyuser

最好是这样做:

setspn -s CS/dummy.abc.com dummyuser

为了获得额外的功劳,我还相应地修改了您的密钥表创建命令,尽管保留了DES部分以免进一步混淆。

ktpass +rndPass -out dummy.1.keytab -princ CS/dummy.abc.com@ABC.COM -crypto DES-CBC-MD5 +DumpSalt -ptype KRB5_NT_PRINCIPAL +desOnly /mapOp set /mapUser dummyuser@ABC.COM
 类似资料:
  • 我有一个关于bean的正确格式和用法的问题。xml文件。在我的项目中,我通常将这些内容用于我的bean。xml文件(未使用explizit bean声明): 这在WildFly 8和9中运行得很好。但是我在GlassFish 4中有部署问题。在问题中:Glassfish 4,CDI中的简单示例在WELD-001408中失败。我写了一个替代格式: 这里使用了不同的名称空间。GlassFish4似乎很

  • 我有点迷失了JSON格式,我必须返回Select2才能正常工作。 我返回的JSON用fiddler捕获: 和我的Select2设置(#FuncionarioID是一个选择输入): }); 我一直在Stackoverflow阅读关于同一主题的问题,我尝试了答案,但没有一个对我有用。关于解决这个问题,你有什么建议吗?我已经尝试返回像这样的对象{“id”:“1060”,“text”:“teste1”},

  • 我见过很多不同的JSON日期格式标准: 哪一个是正确的?还是最好?这方面有什么标准吗?

  • 问题内容: 我正在使用以下SQL字符串将此数据插入到我的MySQL数据库中: 并且我收到此错误消息: 那么输入MySQL数据库的正确格式/值是什么? 问题答案: 问: MySQL语句中文字的正确格式/值是什么? 答: 在MySQL中,文字的标准格式为: 时间部分为24小时制(即,小时数字以00到23之间的值形式提供)。 MySQL提供了一个内置函数,可以将各种格式的字符串转换为或数据类型。 因此,

  • 问题内容: 我正在创建一个小型Java Jpanel游戏,其中应该有一个火箭,它通过箭头上下移动,并通过太空射击。 触发方法应按以下方式工作:按下空格键,东西触发并在屏幕上移动,然后当它碰到某个x时,它就会消失。此外,您只能发射一次,直到另一颗子弹消失为止。 我不知道我在做什么错。首先,在我的代码启动后,您会看到子弹在屏幕上飞舞。 2,子弹没有消失。 第三,即使其他子弹仍然可见,它也允许我再次开火

  • 我们的LinkedIn APP不再适用于V2的演变。我已经尝试了几次,但未能创建正确的令牌。我正在寻求帮助以创建正确的授权链接以获取令牌。应用程序的错误目前是“清空开放2访问令牌” 我创建了一个新的LinkedIn应用程序来取代我们的旧应用程序。我试着按照LinkedIn和微软的指示去做,但是我的努力产生了下面的错误 我最近的尝试是: https://www.linkedin.com/oauth/