在 Liberty 中为出站 SPNEGO 令牌配置 Kerberos 约束委派

可配置 Liberty 服务器以支持对出站 SPNEGO 令牌的 Kerberos 约束委派。

开始之前

确保您已配置 SPNEGO Web 认证。

仅 IBM® JDK 1.8 及更高版本受支持。

关于此任务

名为 S4U(针对用户的服务)的 Kerberos V5 扩展(又称为约束委派)由两个部分组成:
S4U2self

允许 Liberty 服务器代表用户获取针对它自身的服务凭单。可将它与 Liberty 支持的任何形式的认证配合使用。S4U2self 是 Kerberos 协议转换扩展。

S4U2proxy

允许 Liberty 服务器代表用户获取针对可信服务的服务凭单。这些服务凭单是使用该用户的针对 Liberty 服务的服务凭单获取的。这些服务由 Kerberos 密钥分发中心 (KDC) 管理员约束。S4U2proxy 是 Kerberos 约束的授权扩展。

约束委派功能部件提供以下 API,以便为支持 SPNEGO 认证的后端服务(例如,.NET 服务器和其他 Liberty 服务器)创建出站 SPNEGO 令牌。
  • S4U2self API:com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorizationUsingS4U2self()
  • S4U2proxy API:com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorization()

以下步骤使用在 Liberty 中配置 SPNEGO 认证中使用并在使用 SPNEGO Web 认证对 HTTP 请求进行单点登录中演示的同一示例系统设置。

过程

  1. 在 Microsoft 域控制器 myAdMachine.example.com 上,更新您在验证入局 SPNEGO 令牌时使用的服务主体名称 (SPN)。例如,按如下所示更新 HTTP/myLibertyMachine.example.com SPN:
    1. 要使用 S4U2self,请执行以下步骤:
      1. 打开映射至授权 SPN 的用户帐户。
      2. 打开“属性编辑器”选项卡。
      3. 按如下所示修改 userAccountControl 属性:
        • 对认证授权(0x1000000 或 TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION enum)的信任必须为 true。
      4. 设置可信服务:
        • 在用户帐户中打开“授权”选项卡。
        • 选中信任此用户以仅对指定服务授权单选按钮。
        • 选中使用任意认证协议单选按钮。
        • 单击添加以添加可信服务。
        • 单击用户或计算机
        • 输入要用于可信服务的 SPN。
        • 单击检查名称并验证是否找到相应对象名。
        • 单击确定
        • 选择所指定 SPN 并单击确定
    2. 要使用 S4U2proxy,请执行以下步骤:
      1. 打开映射至授权 SPN 的用户帐户。
      2. 打开“属性编辑器”选项卡。
      3. 按如下所示修改 userAccountControl 属性:
        • 对认证授权(0x1000000 或 TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION enum)的信任必须为 true。
      4. 设置可信服务:
        • 在用户帐户中打开“授权”选项卡。
        • 选中信任此用户以仅对指定服务授权单选按钮。
        • 单击添加以添加可信服务。
        • 单击用户或计算机
        • 输入要用于可信服务的 SPN。
        • 单击检查名称并验证是否找到相应对象名。
        • 单击确定
        • 选择所指定 SPN 并单击确定
  2. 在 Liberty 服务器 (myLibertyMachine.example.com) 上,通过在 server.xml 文件中将 constrianedDelegation-1.0 添加至 featureManager 并配置 JAAS Kerberos 登录模块来启用约束委派功能部件。
    <featureManager>
            <feature>spnego-1.0</feature>
            <feature>contrainedDelegation-1.0</feature>
            ...
    </featuremanager>
    <jaasLoginContextEntry id="com.ibm.security.jgss.krb5.accept" name="com.ibm.security.jgss.krb5.accept" loginModuleRef="useKeytab" />
    	 <jaasLoginModule id="useKeytab" className="com.ibm.security.auth.module.Krb5LoginModule" controlFlag="REQUIRED" libraryRef="jaasSharedLib">
                    <options 
                            credsType="both"
                            debug="true" 
                            useDefaultCcache="false"
                            tryFirstPass="true"
                            forwardable ="true"                    
                            principal="HTTP/myLibertyMachine.example.com"
                            useKeytab="${server.config.dir}/resources/security/kerberos/krb5.keytab">
                    </options>		 		 		 		  
            </jaasLoginModule>
    
    
    <library id="jaasSharedLib" apiTypeVisibility="spec, ibm-api, api">
          <fileset dir="${server.config.dir}/lib/global/" includes="*" />
    </library>
    启用 constrainedDelegation-1.0 功能部件后,以下配置是隐式的:
    <constrainedDelegation id="defaultConstrainedDelegation" s4U2selfEnabled="false" />
    要使用 S4U2selfserver.xml 文件中需要以下配置:
    <constrainedDelegation s4U2selfEnabled = "true" id="defaultConstrainedDelegation"/>
    注: 使用 S4U2proxy API 时,jaasLoginContextEntry id 和 name com.ibm.security.jgss.krb5.accept 不能更改。
    注: 缺省情况下,将启用 S4U2proxy 并禁用 S4U2self。可通过在 server.xml 文件中修改 s4U2selfEnabled 属性来启用或禁用 S4U2self 扩展。

结果

现在,您的应用程序已准备好调用由约束委派功能部件提供的 API。

用于指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_config_kerb_constrained_del
文件名:twlp_config_kerb_constrained_del.html