En este art铆culo, le contar茅 c贸mo cambiamos de NTLM a la autorizaci贸n Kerberos para aplicaciones en Oracle Weblogic Server, lo que simplifica el inicio de sesi贸n del usuario al eliminar la necesidad de ingresar una contrase帽a. Todos los usuarios, as铆 como el servidor de aplicaciones, est谩n en el mismo dominio; la autorizaci贸n de dominio para las aplicaciones del servidor Weblogic tambi茅n se configur贸 previamente. Todas las configuraciones se verificaron en WLS 12.1.2.
Primero, una peque帽a teor铆a, muy brevemente para una mayor comprensi贸n del proceso de interacci贸n.
驴Qu茅 es el inicio de sesi贸n 煤nico?
Single Sign-On (SSO) es un mecanismo a trav茅s del cual una acci贸n de autenticaci贸n de un solo usuario le permite al usuario acceder a todas las computadoras y sistemas donde tiene permiso de acceso sin tener que ingresar varias contrase帽as. Las credenciales ingresadas previamente ser谩n reutilizadas de forma transparente por varios componentes.
驴Qu茅 es Kerberos?
Kerberos es un protocolo de autenticaci贸n de red que fue desarrollado por el Instituto de Tecnolog铆a de Massachusetts. Kerberos es un m茅todo seguro para autenticar una solicitud de un servicio en la red y est谩 dise帽ado para proporcionar una autenticaci贸n s贸lida para aplicaciones cliente-servidor utilizando criptograf铆a con una clave secreta.
驴Qu茅 es SPNEGO?
SPNEGO es un motor de negociaci贸n GSSAPI simple y seguro. Esta es una interfaz estandarizada para la autenticaci贸n (por ejemplo, JNDI para b煤squedas de directorio), la implementaci贸n predeterminada para SPNEGO en Windows es Kerberos (por ejemplo, LDAP para JNDI). La terminolog铆a de Microsoft utiliza "Autenticaci贸n de Windows integrada" como sin贸nimo de SPNEGO. En la autenticaci贸n integrada de Windows, se pueden negociar los protocolos Kerberos o NTLM.
Cuando un servidor recibe una solicitud de Internet Explorer (IE 6.1 o superior), puede solicitar que el navegador utilice el protocolo SPNEGO para la autenticaci贸n. Este protocolo realiza la autenticaci贸n Kerberos a trav茅s de HTTP y permite a Internet Explorer delegar la autoridad delegada para que la aplicaci贸n web pueda iniciar sesi贸n en los servicios Kerberizados posteriores en nombre del usuario.
Cuando el servidor HTTP quiere ejecutar SPNEGO, devuelve una respuesta "401 no autorizada" a la solicitud HTTP con el t铆tulo "Autorizaci贸n WWW: Negociar". Internet Explorer se pone en contacto con el Servicio de tickets (TGS) para obtener un ticket. Elige el nombre especial del participante del servicio para solicitar un boleto, por ejemplo:
HTTP/webserver@<DOMAIN NAME>
El ticket devuelto se envuelve en un token SPNEGO, que se codifica y se env铆a de vuelta al servidor mediante una solicitud HTTP. El token se despliega y el boleto se autentica.
Beneficios de Kerberos
El uso de Kerberos permite a los administradores deshabilitar la autenticaci贸n NTLM en cuanto todos los clientes de la red puedan autenticar Kerberos. Kerberos es m谩s flexible y eficiente que NTLM y m谩s seguro.
Configurar SSO basado en Kerberos en un entorno de servidor de aplicaciones Weblogic
Esquema de interacci贸n:

- Cuando un usuario registrado (PC) solicita un recurso de Oracle WebLogic Server (WLS), env铆a la solicitud HTTP GET original.
- El servidor de Oracle WebLogic Server (WLS) que ejecuta el c贸digo de token SPNEGO requiere autenticaci贸n y emite un acceso 401 denegado, WWWAuthenticate: negociar respuesta.
- Un cliente (navegador en la PC) solicita un ticket de sesi贸n de TGS / KDC (AD).
- TGS / KDC (AD) proporciona al cliente el ticket Kerberos necesario (siempre que el cliente est茅 autorizado), envuelto en el token SPNEGO.
- El cliente reenv铆a la solicitud HTTP GET + Negociar token SPNEGO en el encabezado de autorizaci贸n: Negociar base64 (token).
- Al verificar la autenticaci贸n web SPNEGO en el servidor Weblogic, se ve un encabezado HTTP con el token SPNEGO. SPNEGO comprueba el token SPNEGO y obtiene informaci贸n del usuario.
- Despu茅s de que Weblogic recibe la informaci贸n del usuario, valida al usuario en Microsoft Active Directory / KDC. Cuando se completa el proceso de autenticaci贸n, Weblogic ejecuta el c贸digo Java correspondiente (servlets, JSP, EJB, etc.) y verifica la autorizaci贸n.
- El c贸digo del manejador del token del servidor Oracle WebLogic acepta y procesa el token a trav茅s de la API GSS, autentica al usuario y responde con la URL solicitada.
Ahora vamos a practicar
1. Realizamos ajustes en el lado del servidor del dominio del controlador en el que est谩n configurados los servicios TGS / KDC.
- Crear un usuario en Active Directory (la contrase帽a no debe caducar)
- Establezca el SPN apropiado para el nombre del servidor WLS
Realizar la verificaci贸n establecida por SPN
setspn 鈥搇 HTTP_weblogic
deber铆a devolver dos registros
Generar archivo de tabla de claves
ktpass -princ HTTP_weblogic@mycompany.com -pass PASSWORD -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -kvno 0 -out c:\krb5.keytab
Copie este archivo al servidor WLS
2. Configuraci贸n del servidor WLS
- Debe crear el archivo krb5.ini en la carpeta% windir%: C: \ Windows. Este archivo contiene ajustes de configuraci贸n para clientes, por ejemplo, donde se encuentra el KDC. El archivo se ver谩 as铆:
[libdefaults] default_realm = <DOMAIN NAME> ticket_lifetime = 600 [realms] <DOMAIN NAME> = { kdc = <HOSTNAME OF AD/KDC> admin_server = <HOSTNAME OF AD/KDC> default_domain = <DOMAIN NAME> } [domain_realm] . <DOMAIN NAME>= <DOMAIN NAME> [appdefaults] autologin = true forward = true forwardable = true encrypt = true
- Cree el archivo de configuraci贸n krb5Login.conf:
com.sun.security.jgss.krb5.initiate { com.sun.security.auth.module.Krb5LoginModule required principal="user@MYCOMPANY.COM" useKeyTab=true keyTab=krb5.keytab storeKey=true debug=true; }; com.sun.security.jgss.krb5.accept { com.sun.security.auth.module.Krb5LoginModule required principal="user@MYCOMPANY.COM" useKeyTab=true keyTab=krb5.keytab storeKey=true debug=true; };
Tenga en cuenta que el nombre de dominio debe estar en
may煤scula . Para versiones anteriores, use com.sun.security.jgss.initiate en la configuraci贸n anterior en lugar de com.sun.security.jgss.krb5.initiate.
- Los archivos krb5Login.conf y krb5.keytab deben ubicarse en la ra铆z del directorio del dominio del servidor WLS.
- Edici贸n del archivo setDomainEnv
Encuentre el conjunto de l铆neas JAVA_OPTIONS =% JAVA_OPTIONS% y agregue al final
-Djava.security.auth.login.config=< >\krb5Login.conf -Djavax.security.auth.useSubjectCredsOnly=false -Dweblogic.security.enableNegotiate=true
- En este caso, no estamos considerando configurar la autorizaci贸n WLS en AD, creemos que funciona, si necesita pintar este art铆culo, escriba los comentarios.
- Configurando SPNEGO en WLS
Para hacer esto, vaya a la Consola de administraci贸n del servidor WebLogic
Vaya a la secci贸n Reinos de seguridad> myrealm> Proveedores y haga clic en el bot贸n Agregar
Seleccione el tipo de "Proveedor de Afirmaci贸n de Identidad de Negociaci贸n de WebLogic"
Verifique que ambos par谩metros est茅n seleccionados.

Presionamos el bot贸n Reordenar y al controlar las flechas establecemos la secuencia de los tipos de autorizaci贸n. En primer lugar, debe instalarse el proveedor WebLogic Negotiate Identity Assertion en segundo lugar Proveedor que realiza la autenticaci贸n LDAP (autorizaci贸n de dominio)

- A continuaci贸n, debe indicar a la aplicaci贸n el m茅todo de autorizaci贸n CLIENTE-CERT; estos cambios se aplican en el archivo web.xml de la aplicaci贸n
<security-constraint> <display-name>Security Constraint for SSO </display-name> <web-resource-collection> <web-resource-name>My webapp</web-resource-name> <description>Group of Users</description> <url-pattern>/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>valid-users</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>CLIENT-CERT</auth-method> </login-config> <security-role> <description>Role description</description> <role-name>valid-users</role-name> </security-role>
El rol debe estar preinstalado en el sistema. En nuestro caso, se utiliza el rol incorporado para ADF (usuarios v谩lidos) y, m谩s adelante, seg煤n los grupos de dominio, se otorgan permisos.
Para identificar problemas con la autorizaci贸n, debe habilitar la depuraci贸n. Para hacer esto, vaya a la secci贸n.
Entorno -> Servidores, seleccione nuestro servidor -> Depurar -> weblogic (expandir) -> Seguridad -> atn, marque la casilla y act铆velo.

Para habilitar y deshabilitar la depuraci贸n, no es necesario reiniciar.
Inicie sesi贸n en la m谩quina de dominio, haga clic en el enlace de la aplicaci贸n e inicie sesi贸n sin ingresar una contrase帽a. Vale la pena se帽alar que el bot贸n Salir de la aplicaci贸n no funcionar谩 en esta configuraci贸n.