我是通过kerberos协议进行此身份验证的新手,所以我尝试阅读很多关于它的方法,但似乎我找不到任何具有约束条件的细节。这就是我所拥有的:
现在我希望自动登录我的servlet。基本上我只需要我的servlet来检索客户端的主体然后我可以管理其余的。 根据我的理解,我的客户有一张票,他要求KDC获取访问apache服务器的特殊票,然后他尝试连接到Apache服务器。基于他的keytab,apache服务器然后解码auth数据并授予/拒绝对指定资源的访问。 我对吗?请指导我,我已经阅读了4天的页面,但仍然不知道哪种解决方案更合适。我为Apache尝试了mod_auth_kerberos,但他没有抓住用户的票,而是像基本的auth那样问它。显然是spgneo
由于
答案 0 :(得分:3)
好的,我有这个工作:
<强>的apache.conf 强>:
[…]
ServerName apache.mydom.com:80
[…]
LoadModule auth_kerb_module modules/mod_auth_kerb.so
[…]
<LocationMatch /secure)>
[… some other stuff …]
Order allow,deny
Allow from all
AuthType Kerberos
AuthName "Authentification requise"
KrbAuthRealms MYDOM.COM
#this allows user to be saved in the request
KrbSaveCredentials on
#this one force Negotiate AuthType instead of basic fallback
KrbMethodNegotiate on
#this trim the realm from username saved in the request (request.getRemoteUser() will give you "user" instead of "user@MYDOM.COM"
KrbLocalUserMapping on
KrbAuthoritative on
KrbVerifyKDC on
Krb5Keytab /install/binaries/httpd/apache.keytab
KrbServiceName HTTP
require valid-user
</LocationMatch>
我在Web上几乎找不到的一件事,你必须修改你的tomcat服务器配置(tomcat / conf / server.xml):
<Connector [... AJP connector configuration ...] request.tomcatAuthentication="false"/>
非常重要因为没有它,tomcat将无法从tomcat auth中检索任何信息。 不要忘记,对于Kerberos安装,DNS确实非常重要。如果您有任何问题,请尝试检查所有服务器的DNS。