将密钥表文件与Spring安全Kerberos扩展配合使用 [英] using keytab file with spring security kerberos extension

查看:28
本文介绍了将密钥表文件与Spring安全Kerberos扩展配合使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的目标:在基于Java的Web应用程序上实现SSO。 我的问题是:我不是保安.

经过一番调查后,我发现Spring安全Kerberos扩展正是我所需要的(我还查看了Apache Shio,但只能找到带有登录页面的示例)。

我在以下项目中使用了示例: https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-sample

我意识到我需要创建密钥表。当我尝试使用密钥表时,收到以下错误:

javax.security.auth.login.LoginException: Unable to obtain password from user
查看有关此错误的一些详细信息时,我发现它可能是由wrong keytab location引起的,但这里不是这种情况-我调试到源代码中,看到密钥表文件已加载。

所以我决定检查我的密钥表,看看它是否正常。 首先,这是我用来创建密钥表的最后一个命令(经过很长时间的演变):

ktpass /out http-web.keytab /mapuser MyUser@MYDOMAIN.COM /princ HTTP/MyUser@MYDOMAIN.COM /pass MyPass /ptype KRB5_NT_PRINCIPAL

当然,我使用以下命令为MyUser创建了一个SPN:

setspn -a HTTP/MyUser@MYDOMAIN.COM MYDOMAIN.COMMyUser

我使用以下内容测试了SPN:

setspn -Q HTTP/MyUser@MYDOMAIN.COM

并获得成功结果:

Checking domain DC=mydomain,DC=com CN=MyUser,OU=MyOrg,DC=mydomain,DC=com
    HTTP/MyUser
    HTTP/MyUser@MYDOMAIN.COM

找到现有SPN!

现在我想通过运行以下命令来测试是否可以为MyUser获取票证:

kinit MyUser@MYDOMAIN.COM

我得到了一个成功的结果("新票证存储在缓存文件中.")

现在我想用我的密钥表进行测试:

kinit MyUser@MYDOMAIN.COM -k -t http-web.keytab

获得以下异常:

Exception: krb_error 0 Do not have keys of types listed in default_tkt_enctypes available; only have keys of following type:  No error KrbException: Do not have keys of types listed in default_tkt_enctypes available; only have keys of following type:

我使用klist工具查看我的keytab是否包含任何键:

klist -e -K -k -t  http-web.keytab

获得以下结果:

KVNO: 8
Key type: 23
Key: 0x47bf8039a8506cd67c524a03ff84ba4e
Time stamp: Jan 01, 1970 02:00

作为最后一次孤注一掷的尝试,我检查了MyUser的以下帐户选项:

  • 为此帐户使用Kerberos DES加密类型
  • 该帐户支持Kerberos AES 128位加密
  • 该帐户支持Kerberos AES 256位加密

我不确定这些选项的设置是否导致了此问题,但现在当我运行

kinit MyUser@MYDOMAIN.COM

我收到以下错误:

Exception: krb_error 14 KDC has no support for encryption type (14) KDC has no support for encryption type
KrbException: KDC has no support for encryption type (14)
所以我现在有点绝望,我真的不知道我在做什么。这完全是一个试错的问题(主要是错误)。 如果有人能带我到这里来,我将不胜感激。

谢谢, lior

推荐答案

原来是一个愚蠢的错误。 我在Spring注入了用户帐户,而不是主体名称作为servicePrincipal。

这篇关于将密钥表文件与Spring安全Kerberos扩展配合使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆