Web applications Glassfish JAAS活动目录

Web applications Glassfish JAAS活动目录,web-applications,active-directory,jakarta-ee,glassfish,jaas,Web Applications,Active Directory,Jakarta Ee,Glassfish,Jaas,我正试图在Glassfish中使用JAAS来处理针对Active Directory的web应用程序中的身份验证和授权。首先,我编写了一些POJO程序,可以成功地连接到我的广告,并根据我设置的用户和组进行身份验证。因此,我确信我在web应用程序中使用的用户名、密码和组是正确的 下面我将在Glassfish中设置一个域来处理我的webapp中的身份验证和授权。我已经用我想要的数据修改了web.xml和sun-web.xml web.xml <?xml version="1.0" encodi

我正试图在Glassfish中使用JAAS来处理针对Active Directory的web应用程序中的身份验证和授权。首先,我编写了一些POJO程序,可以成功地连接到我的广告,并根据我设置的用户和组进行身份验证。因此,我确信我在web应用程序中使用的用户名、密码和组是正确的

下面我将在Glassfish中设置一个域来处理我的webapp中的身份验证和授权。我已经用我想要的数据修改了web.xml和sun-web.xml

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>
登录失败时,我在日志中收到的错误消息是

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

我对错误代码“data 525”做了一些研究,显然这意味着用户名无效。我正在使用一个我知道是有效的id和密码,并且我知道它是sun-web.xml中定义的“Test”的成员。我尝试了userPrincipal格式(username@domain)使用当前设置以及sAMAccountName表单(域\用户名),没有运气。我还更改了我所在领域中的搜索过滤器,在userPrincipalName所在的位置使用sAMAccountName,但这两个组合也不起作用。有人有什么线索或建议吗?我觉得我已经做了研究,我非常接近,但在这一点上我非常坚持。谢谢你,如果有人真的花时间阅读了所有这些

我实际上要测试的可能是您的查找凭据,因为您是基于DN=Administrator进行搜索的,对吗?您是否尝试将搜索绑定dn的完整dn分配给管理员帐户?通常默认情况下,基于您的上述信息,这将
DN=Administrator,CN=Users,DC=myAD,DC=com

我实际测试的可能是您的查找凭据,因为您是基于DN=Administrator进行搜索的,对吗?您是否尝试将搜索绑定dn的完整dn分配给管理员帐户?通常默认情况下,根据您的上述信息,这将
DN=Administrator,CN=Users,DC=myAD,DC=com

我同意REW-我的搜索绑定DN必须完全符合搜索绑定id的工作条件。

我同意REW-我的搜索绑定DN必须完全符合搜索绑定id的工作条件

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