5.8.2. 使用 SPNEGO 的桌面 SSO

要配置使用 SPNEGO 的桌面 SSO,请进行下面的配置:
  • 安全域
  • 系统属性
  • Web 应用程序

过程 5.5. 配置使用 SPNEGO 的桌面 SSO

  1. 配置安全域

    配置安全域来代表服务器的标识符并为 Web 应用程序设置安全性。

    例 5.15. 安全域配置

    <security-domains>
    
        <security-domain name="host" cache-type="default">
    
          <authentication>
    
            <login-module code="Kerberos" flag="required">
    
              <module-option name="storeKey" value="true"/>
    
              <module-option name="useKeyTab" value="true"/>
    
              <module-option name="principal" value="host/testserver@MY_REALM"/>
    
              <module-option name="keyTab" value="/home/username/service.keytab"/>
    
              <module-option name="doNotPrompt" value="true"/>
    
              <module-option name="debug" value="false"/>
    
            </login-module>
    
           </authentication>
    
         </security-domain>
    
       
    
         <security-domain name="SPNEGO" cache-type="default">
    
           <authentication>
    
             <login-module code="SPNEGO"  flag="requisite">
    
               <module-option name="password-stacking" value="useFirstPass"/>
    
               <module-option name="serverSecurityDomain" value="host"/>
    
             </login-module>
    
    
             <!-- Login Module For Roles Search -->
    
           </security-domain>
    
    
  2. 设置系统属性

    如果需要,系统殊性可以在域模型里进行设置。

    例 5.16. 配置系统属性

    <system-properties>
    
          <property name="java.security.krb5.kdc" value="mykdc.mydomain"/>
    
          <property name="java.security.krb5.realm" value="MY_REALM"/>
    
        </system-properties>
    
    
  3. 配置 Web 应用程序

    覆盖这个验证器是不可能的,但你可以在 jboss-web.xml 里添加 NegotiationAuthenticator 来配置 web 应用程序。

    注意

    这个 Valve 要求在 web.xml 里定义 security-constraintlogin-config,因为它们用于决定哪些资源被保护。然而,这个验证器会覆盖所选的 auth-method

    例 5.17. 配置 Web 应用程序

     <!DOCTYPE jboss-web PUBLIC
      "-//JBoss//DTD Web Application 2.4//EN"
      "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd">   
    
      <jboss-web>
    
        <security-domain>java:/jaas/SPNEGO</security-domain>
    
        <valve>
    
          <class-name>org.jboss.security.negotiation.NegotiationAuthenticator</class-name>
    
        </valve>
    
      </jboss-web>
    
    
    这个 Web 应用程序也要求在 META-INF/MANIFEST.MF 定义依赖关系,以便定位 JBoss Negotiation 类。

    例 5.18. 在 META-INF/MANIFEST.MF 里定义依赖关系

        Manifest-Version: 1.0
    
        Build-Jdk: 1.6.0_24
    
        Dependencies: org.jboss.security.negotiation