Puede configurar un servidor
Liberty para
soportar la delegación restringida de Kerberos para señales SPNEGO
de salida.
Antes de empezar
Asegúrese de que ha configurado la autenticación web de
SPNEGO.
Solo están soportados IBM®
JDK 1.8 y posteriores.
Acerca de esta tarea
La extensión de Kerberos v5 llamada S4U
(servicios para usuarios) también conocida como delegación
restringida está formada por dos partes:
- S4U2self
Permite a un servidor
Liberty
obtener un tíquet de servicio para sí mismo en nombre de un
usuario. Este se puede utilizar con cualquier forma de
autenticación que admita Liberty.
S4U2self
es la extensión de transición de protocolo Kerberos.
- S4U2proxy
Permite a un servidor
Liberty
obtener tíquets de servicio de servicios de confianza en nombre de un
usuario. Estos tíquets de servicio se obtienen utilizando el tíquet
de servicio del usuario para el servicio
Liberty.
Los servicios están restringidos por el
administrador del centro de distribución de claves (KDC) de Kerberos.
S4U2proxy es la extensión de la delegación
restringida de Kerberos.
La característica de delegación restringida proporciona las API
siguientes para crear la señal SPNEGO de salida para servicios de
fondo que admiten autenticación SPNEGO como, por ejemplo,
servidores .NET y otros servidores
Liberty.
- API S4U2self:
com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorizationUsingS4U2self()
- API S4U2proxy:
com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorization()
Los pasos siguientes utilizan la misma configuración de sistema
de ejemplo que se utiliza en la
Configuración
de autenticación SPNEGO en Liberty y se ilustra en el
Inicio
de sesión único para solicitudes HTTP utilizando la
autenticación web de SPNEGO.
Procedimiento
- En el controlador de dominio de
Microsoft
myAdMachine.example.com, actualice el nombre
principal del servicio (SPN) que utiliza para validar la señal SPNEGO
de entrada. Por ejemplo, actualice el SPN
HTTP/myLibertyMachine.example.com del modo
siguiente:
- Para utilizar S4U2self, realice los
pasos siguientes:
- Abra la cuenta de usuario que está correlacionada con el SPN
delegado.
- Abra la pestaña Editor de atributos.
- Modifique la propiedad userAccountControl del
modo siguiente:
- De confianza para la delegación de autenticación (0x1000000,
o la enumeración TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION)
debe ser verdadero.
- Establezca el servicio de confianza:
- Abra la pestaña Delegación en la cuenta de usuario.
- Seleccione el botón de opción Confiar en este usuario
para la delegación solo a servicios especificados.
- Seleccione el botón de opción Utilizar cualquier
protocolo de autenticación.
- Pulse en Añadir para añadir el servicio
de confianza.
- Pulse Usuarios o equipos.
- Especifique el SPN que se va a utilizar para el servicio de
confianza.
- Pulse Comprobar nombres y verifique que se
ha encontrado el nombre de objeto apropiado.
- Pulse Aceptar.
- Seleccione el SPN especificado y pulse
Aceptar.
- Para utilizar S4U2proxy, realice los
pasos siguientes:
- Abra la cuenta de usuario que está correlacionada con el SPN
delegado.
- Abra la pestaña Editor de atributos.
- Modifique la propiedad userAccountControl del
modo siguiente:
- Es de confianza para la delegación de autenticación (0x1000000,
o la enumeración TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION)
debe ser verdadero.
- Establezca el servicio de confianza:
- Abra la pestaña Delegación en la cuenta de usuario.
- Seleccione el botón de opción Confiar en este usuario
para la delegación solo a servicios especificados.
- Pulse en Añadir para añadir el servicio de
confianza.
- Pulse Usuarios o equipos.
- Especifique el SPN que se va a utilizar para el servicio de
confianza.
- Pulse Comprobar nombres y verifique que se
ha encontrado el nombre de objeto apropiado.
- Pulse Aceptar.
- Seleccione el SPN especificado y pulse
Aceptar.
- En la máquina del servidor
Liberty,
(myLibertyMachine.example.com), habilite la
característica de delegación restringida añadiendo
constrianedDelegation-1.0 a
featureManager y configure el módulo de inicio de
sesión de JAAS Kerberos en el archivo
server.xml.
<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>
Cuando está habilitada la característica
constrainedDelegation-1.0, la configuración
siguiente está implícita:
<constrainedDelegation
id="defaultConstrainedDelegation" s4U2selfEnabled="false" />
Para utilizar
S4U2self, se necesita la siguiente configuración en el archivo
server.xml:
<constrainedDelegation s4U2selfEnabled = "true" id="defaultConstrainedDelegation"/>
Nota: Cuando
se utiliza la API S4U2proxy, el ID jaasLoginContextEntry y el nombre
com.ibm.security.jgss.krb5.accept no se pueden cambiar.
Nota: De
forma predeterminada, S4U2proxy está habilitada y
S4U2self está inhabilitada. La extensión
S4U2self se puede habilitar o inhabilitar
modificando el atributo s4U2selfEnabled en
el archivo server.xml.
Resultados
Ahora, la aplicación estará preparada para llamar a la API
proporcionada por la característica de delegación restringida.