Question

Je tente d'utiliser JAAS dans Glassfish pour gérer l'authentification et l'autorisation dans mes applications Web contre Active Directory. Tout d'abord, je l'ai écrit quelques programmes POJO qui peuvent se connecter avec succès à mon AD et contre les utilisateurs Authentifier et les groupes que j'ai installé. J'utilise dans mon application web sont correctes, donc je suis convaincu que les noms d'utilisateur, mots de passe et les groupes.

Je Ce tutoriel pour configurer un royaume en Glassfish pour gérer l'authentification et autorisation dans mon webapp. Je l'ai modifié mon web.xml et le soleil web.xml avec mes données que je veux.

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>

et mon soleil 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>

Mon royaume

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

Le message d'erreur que je reçois dans mes journaux quand je me connecte et il ne fonctionne pas est

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

Je l'ai fait des recherches sur le code d'erreur « 525 données » et apparemment cela signifie que le nom d'utilisateur est invalide. J'utilise un identifiant et mot de passe que je sais est valide et je sais est membre du « Test » tel que défini dans mon soleil web.xml. J'ai essayé le format UserPrincipal (nom d'utilisateur @ domaine) avec les paramètres actuels, ainsi que la forme sAMAccountName (domaine \ nom d'utilisateur) avec pas de chance. J'ai aussi changé la recherche-filtre dans mon royaume à utiliser sAMAccountName où userPrincipalName est et cela ne fonctionne pas en utilisant les deux combos soit. Quelqu'un at-il des indices ou des suggestions? Je me sens comme je l'ai fait la recherche et je suis très proche, mais très coincé à ce stade. Merci si quelqu'un prend réellement le temps de lire tout cela!

Était-ce utile?

La solution

Ce que je fait tester peut-être vos Identifiants Lookup, puisque vous êtes à la recherche basé sur DN = administrateur, non? Avez-vous essayé lui donner la pleine dn au compte de l'administrateur pour la recherche-bind-dn? En règle générale par défaut qui DN=Administrator, CN=Users, DC=myAD, DC=com en fonction de vos informations ci-dessus.

Autres conseils

Je suis d'accord avec REW - ma recherche-bind-dn devait être qualifié pour l'ID de recherche-bind au travail

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top