directorio activo glassfish JAAS
-
30-09-2019 - |
Pregunta
Estoy intentando utilizar JAAS en Glassfish a la autenticación y autorización mango en mis aplicaciones web en Active Directory. En primer lugar, he escrito algunos programas POJO que puede conectarse correctamente a mi AD y autenticación en los usuarios y grupos que tengo de configuración. Así que estoy seguro de que los nombres de usuario, contraseñas y grupos que estoy usando en mi aplicación web son correctos.
Este tutorial de configurar un reino en Glassfish para manejar la autenticación y la autorización dentro de mi aplicación web. He modificado mi web.xml y sun-web.xml con mis datos que yo quiero.
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>myapp</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>activedirectory</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.html</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>authorized</role-name>
</security-role>
<security-constraint>
<display-name>Security</display-name>
<web-resource-collection>
<web-resource-name>Secured</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>authorized</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
y mi sun-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd">
<sun-web-app error-url="">
<context-root>/myapp</context-root>
<security-role-mapping>
<role-name>authorized</role-name>
<group-name>Test</group-name>
</security-role-mapping>
<class-loader delegate="true"/>
<jsp-config>
<property name="keepgenerated" value="true">
<description>Keep a copy of the generated servlet class java code.</description>
</property>
</jsp-config>
</sun-web-app>
Mi reino
name: activedirectory
class name: com.sun.enterprise.security.auth.realm.ldap.LDAPRealm
JAAS context: ldapRealm
Directory: ldap://myADServersIPAddress:389
Base DN: DC=myAD,DC=com
search-filter (&(objectClass=user)(userPrincipalName=%s))
search-bind-password fakepasswordhere
group-search-filter (&(objectClass=group)(member=%d))
search-bind-dn DN=Administrator
El mensaje de error que consigo en los registros de mi cuando me conecto y falla es
Login failed: javax.security.auth.login.LoginException:
javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-
0C090290, comment: AcceptSecurityContext error, data 525, v893]
Hice algunas investigaciones sobre el código de error "datos de 525" y al parecer esto significa que el nombre de usuario no es válido. Estoy usando un identificador y una contraseña que sé es válida y sé que es un miembro de la "prueba" como se define en mi sun-web.xml. He probado el formato UserPrincipal (nombre de usuario @ dominio) con la configuración actual, así como la forma sAMAccountName (dominio \ nombre de usuario) sin suerte. También he cambiado de búsqueda de filtro en mi reino de usar sAMAccountName donde userPrincipalName es y que no funcionó con las dos combos tampoco. ¿Alguien tiene alguna pista o sugerencia? Siento que he hecho la investigación y estoy muy cerca, pero muy atascado en este punto. Gracias si alguien realmente se toma el tiempo de leer todo esto!
Solución
Lo que yo realmente la prueba podría ser su Credenciales de búsqueda, ya que está basado en la búsqueda de DN = Administrador, ¿verdad? ¿Ha tratado dándole el DN completo a la cuenta de administrador para la búsqueda-bind-dn? Típicamente por defecto que DN=Administrator, CN=Users, DC=myAD, DC=com
basado en la información de su anterior.
Otros consejos
Estoy de acuerdo con REW - mi búsqueda-bind-dn tenía que ser completamente calificado para el ID de búsqueda se unen al trabajo
.