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!

¿Fue útil?

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

.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top