Domanda

Sto cercando di utilizzare JAAS in Glassfish per l'autenticazione e l'autorizzazione maniglia nelle mie applicazioni web in Active Directory. Prima di tutto ho scritto alcuni programmi POJO in grado di connettersi con successo per il mio annuncio e autenticare contro gli utenti ei gruppi che ho setup. Quindi sono fiducioso che i nomi utente, password e gruppi che sto usando all'interno della mia applicazione web siano corrette.

Questo tutorial di impostare un Reame in Glassfish per gestire l'autenticazione e autorizzazione all'interno del mio webapp. Ho modificato il mio web.xml e sun-web.xml con i miei dati che voglio.

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>

e la mia 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>

Il mio regno

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

Il messaggio di errore ricevo nei miei ceppi quando faccio il login e viene a mancare è

Login failed: javax.security.auth.login.LoginException:  
javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-
0C090290, comment: AcceptSecurityContext error, data 525, v893]

ho fatto qualche ricerca sul codice di errore "Dati 525" ea quanto pare questo significa il nome utente non è valido. Sto usando un id e la password che so è valido e so che è un membro del "Test" come definito nel mio sole-web.xml. Ho provato il formato userPrincipal (nomeutente @ dominio) con le impostazioni correnti così come la forma sAMAccountName (dominio \ nomeutente) senza fortuna. Ho anche cambiato ricerca-filtro nel mio regno per usare sAMAccountName dove userPrincipalName è e che non ha funzionato con entrambe le combo sia. Qualcuno ha qualche indizio o suggerimenti? Mi sento come se avessi fatto la ricerca e sono molto vicino, ma molto bloccato a questo punto. Grazie se qualcuno ha effettivamente il tempo di leggere tutto questo!

È stato utile?

Soluzione

Quello che vorrei davvero di prova potrebbe essere la vostra credenziali di ricerca diretta, dal momento che si sta cercando sulla base DN = Administrator, giusto? Hai provato dandogli il DN completo per l'account Administrator per la ricerca-bind-dn? Tipicamente di default che avrebbe DN=Administrator, CN=Users, DC=myAD, DC=com, sulla base di informazioni di cui sopra.

Altri suggerimenti

Sono d'accordo con REW - la mia ricerca-bind-dn doveva essere completo per l'id di ricerca-bind di lavoro

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top