在JDK5下使用Apache和Tomcat的Kerberos SSO

时间:2011-12-09 16:28:01

标签: java apache tomcat single-sign-on kerberos

我是通过kerberos协议进行此身份验证的新手,所以我尝试阅读很多关于它的方法,但似乎我找不到任何具有约束条件的细节。这就是我所拥有的:

  • 用户通过身份验证登录其工作站的Active Directory服务器
  • 每个最终用户使用IE 7连接到我的Intranet应用程序
  • 具有负载平衡的Apache服务器
  • 一些Tomcats服务器充当Apache服务器的工作者。
  • 在每个tomcat上,我运行了2个jakarta servlet,用户只在一个servlet上连接(我将其称为servlet,就像只有一个一样)
  • 我的tomcats需要在jdk5下运行。不是jdk6或jdk4。这是jdk5时期。

现在我希望自动登录我的servlet。基本上我只需要我的servlet来检索客户端的主体然后我可以管理其余的。 根据我的理解,我的客户有一张票,他要求KDC获取访问apache服务器的特殊票,然后他尝试连接到Apache服务器。基于他的keytab,apache服务器然后解码auth数据并授予/拒绝对指定资源的访问。 我对吗?请指导我,我已经阅读了4天的页面,但仍然不知道哪种解决方案更合适。我为Apache尝试了mod_auth_kerberos,但他没有抓住用户的票,而是像基本的auth那样问它。显然是spgneo

由于

1 个答案:

答案 0 :(得分:3)

好的,我有这个工作:

  1. 安装Kerberos 5 + apache 2 + mod_auth_kerb。
  2. 在您的AD上,生成一个只包含您将用于Apache的主体的密钥表,我使用HTTP /apache.mydom.com@MYDOM.COM
  3. 将此密钥表文件放在您的apache服务器上,并使其仅可读 由您的Apache用户。
  4. 然后使用这些指令编辑您的apache conf以确保安全 位置
  5. <强>的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。