active directory Glassfish JAAS
-
30-09-2019 - |
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!
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
.