2.7. 配置身份提供程序以使用 Kerberos 身份验证


除了其他身份存储外,IDP 还可以将 Kerberos 用作其身份验证机制。要将 IDP 设置为使用 Kerberos,您需要执行以下操作:

注意

它假设您有一个正常工作的 Kerberos 环境。

  1. 配置用于 Kerberos 身份验证的安全域.

    您可以使用以下命令配置 IDP 所需的安全域。如需更多信息,请参阅《如何使用 Kerberos 设置 SSO 指南》的"JBoss EAP 配置传统安全子系统 "一节。

    /subsystem=security/security-domain=host:add(cache-type=default)
    
    /subsystem=security/security-domain=host/authentication=classic:add
    
    /subsystem=security/security-domain=host/authentication=classic/login-module=Kerberos:add(code=Kerberos, flag=required, module-options=[debug=false, storeKey=true, refreshKrb5Config=true, useKeyTab=true, doNotPrompt=true, keyTab=/home/username/service.keytab, principal=host/SERVER_NAME@REALM_NAME])
    
    /subsystem=security/security-domain=app-spnego:add(cache-type=default)
    
    /subsystem=security/security-domain=app-spnego/authentication=classic:add
    
    /subsystem=security/security-domain=app-spnego/authentication=classic/login-module=SPNEGO:add(code=SPNEGO, flag=required, module-options=[serverSecurityDomain=host])
    Copy to Clipboard Toggle word wrap
    重要

    有关登录模块的更多信息,请参阅 JBoss EAP 登录模块参考中的 Kerberos 登录模块和 SPNEGO 登录模块部分

  2. 为 SP 配置安全域。

    您可以使用以下命令配置 SP 所需的安全域:如需更多信息,请参阅 设置 SP 的完整文档。

    /subsystem=security/security-domain=sp:add(cache-type=default)
    
    /subsystem=security/security-domain=sp/authentication=classic:add
    
    /subsystem=security/security-domain=sp/authentication=classic/login-module=org.picketlink.identity.federation.bindings.jboss.auth.SAML2LoginModule:add(code=org.picketlink.identity.federation.bindings.jboss.auth.SAML2LoginModule,flag=required)
    Copy to Clipboard Toggle word wrap
  3. 重新加载服务器以使更改生效。

    reload
    Copy to Clipboard Toggle word wrap
  4. 完成上述步骤后,将创建以下配置:

    示例:IDP 和 SP 的安全域

    <security-domain name="host" cache-type="default">
      <authentication>
        <login-module code="Kerberos" flag="required">
          <module-option name="debug" value="false"/>
          <module-option name="storeKey" value="true"/>
          <module-option name="refreshKrb5Config" value="true"/>
          <module-option name="useKeyTab" value="true"/>
          <module-option name="doNotPrompt" value="true"/>
          <module-option name="keyTab" value="/home/username/service.keytab"/>
          <module-option name="principal" value="HTTP/testserver@MY_REALM"/>
        </login-module>
      </authentication>
    </security-domain>
    <security-domain name="app-spnego" cache-type="default">
        <authentication>
            <login-module code="SPNEGO" flag="required">
                <module-option name="serverSecurityDomain" value="host"/>
            </login-module>
        </authentication>
        <mapping>
        ...
        </mapping>
    </security-domain>
    <security-domain name="sp" cache-type="default">
        <authentication>
            <login-module code="org.picketlink.identity.federation.bindings.jboss.auth.SAML2LoginModule" flag="required"/>
        </authentication>
    </security-domain>
    Copy to Clipboard Toggle word wrap

  5. 配置 IDP 应用。

    配置 IDP 的过程与设置 IDP 部分所述的相同,但有以下更改:

    • 声明 JBoss Negotiation 的额外依赖性
    • 配置 IDP 应用,以将安全域与 SPNEGO 登录模块搭配使用

      注意

      在配置 IDP 时,您不需要在配置中指定 PicketLinkSTS 元素。如果是异常的 PicketLink,则会从 selectet link-core -VERSION.jar 内名为 core- st 的文件加载默认配置。

      仅在需要时覆盖此配置。例如,更改令牌超时或为 SAML 断言指定自定义安全令牌提供程序。

      示例:使用 Kerberos 和 Picketlink 依赖项的 jboss-deployment-structure.xml

      <jboss-deployment-structure>
        <deployment>
          <dependencies>
            <module name="org.picketlink" services="import"/>
            <module name="org.jboss.security.negotiation"/>
          </dependencies>
        </deployment>
      </jboss-deployment-structure>
      Copy to Clipboard Toggle word wrap

      示例:IDP 中的 jboss-web.xml

      <jboss-web>
        <security-domain>app-spnego</security-domain>
        <context-root>identity</context-root>
      </jboss-web>
      Copy to Clipboard Toggle word wrap

      示例:使用 PicketLinkSTS 元素的 picket link.xml

      <PicketLink xmlns="urn:picketlink:identity-federation:config:2.1">
        <PicketLinkIDP xmlns="urn:picketlink:identity-federation:config:2.1">
        <IdentityURL>${idp.url::http://localhost:8080/idp/}</IdentityURL>
          <Trust>
           <Domains>redhat.com,localhost,amazonaws.com</Domains>
          </Trust>
        </PicketLinkIDP>
        <Handlers xmlns="urn:picketlink:identity-federation:handler:config:2.1">
            <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2IssuerTrustHandler" />
            <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2LogOutHandler" />
            <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2AuthenticationHandler" />
            <Handler class="org.picketlink.identity.federation.web.handlers.saml2.RolesGenerationHandler" />
        </Handlers>
        <!-- The configuration bellow defines a token timeout and a clock skew. Both  configurations will be used during the SAML Assertion creation. This configuration is optional. It is defined only to show you how to set the token timeout and clock skew configuration.   -->
        <PicketLinkSTS xmlns="urn:picketlink:identity-federation:config:1.0" TokenTimeout="5000" ClockSkew="0">
          <TokenProviders>
          <TokenProvider
             ProviderClass="org.picketlink.identity.federation.core.saml.v1.providers.SAML11AssertionTokenProvider"
             TokenType="urn:oasis:names:tc:SAML:1.0:assertion"
             TokenElement="Assertion" TokenElementNS="urn:oasis:names:tc:SAML:1.0:assertion" />
          <TokenProvider
             ProviderClass="org.picketlink.identity.federation.core.saml.v2.providers.SAML20AssertionTokenProvider"
             TokenType="urn:oasis:names:tc:SAML:2.0:assertion"
             TokenElement="Assertion" TokenElementNS="urn:oasis:names:tc:SAML:2.0:assertion" />
          </TokenProviders>
        </PicketLinkSTS>
      </PicketLink>
      Copy to Clipboard Toggle word wrap

      重要

      您必须确保 IDP web.xml 中配置的任何角色都与 Kerberos 环境中配置的角色匹配。若要实现这一目的,可在 IDP 的安全域中配置第二个登录模块,将适当的角色映射到 SPNEGO 身份验证后,或者在 IDP 安全域中使用映射提供程序。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat