编程语言
首页 > 编程语言> > java – Jetty ldap身份验证

java – Jetty ldap身份验证

作者:互联网

我正在尝试使用ldap(活动目录)身份验证设置Jetty 9.1.我没有找到我需要的答案就像疯了一样google …我扩展了包含的demo-app以使用ldap.访问该页面时,我收到以下消息:访问/test-jaas/auth.html时出现问题.原因:!角色.在控制台/日志中,我看到“找到用户?:真”,因此找到了用户,但是导致问题的是角色匹配.

希望有人可以给我一些指示……

这是我的配置:

测试jaas.xml:

<Set name="securityHandler">
 <New class="org.eclipse.jetty.security.ConstraintSecurityHandler">
  <Set name="loginService">
   <New class="org.eclipse.jetty.jaas.JAASLoginService">
    <Set name="name">Test JAAS Realm</Set>
    <Set name="loginModuleName">xyz</Set>
   </New>
  </Set>
 </New>
</Set>

login.conf的:

xyz {
org.eclipse.jetty.jaas.spi.LdapLoginModule required
   debug="true"
   contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
   hostname="host.domain"
   port="389"
   bindDn="CN=xxx,OU=xxx,..."
   bindPassword="xxxx"
   authenticationMethod="simple"
   forceBindingLogin="true"
   userBaseDn="ou=xxxx,..."
   userRdnAttribute="cn"
   userIdAttribute="userPrincipalName"
   userPasswordAttribute="unicodePwd"
   userObjectClass="user"
   roleBaseDn="ou=xxxx,..."
   roleNameAttribute="cn"
   roleMemberAttribute="userPrincipalName"
   roleObjectClass="group";
};

web.xml包含以下内容:

  <security-constraint>
    <web-resource-collection>
      <web-resource-name>JAAS Role</web-resource-name>
      <url-pattern>/auth.html</url-pattern>
    </web-resource-collection>
  <auth-constraint>
      <role-name>user</role-name>
       <role-name>*</role-name>
       <role-name>**</role-name>
    </auth-constraint>  
  </security-constraint>

  <login-config>
    <auth-method>FORM</auth-method>
    <realm-name>Test JAAS Realm</realm-name>
    <form-login-config>
      <form-login-page>
        /login.html
      </form-login-page>
      <form-error-page>
        /authfail.html
      </form-error-page>
    </form-login-config>
  </login-config>

  <security-role>
    <role-name>user</role-name>
  </security-role>
  <security-role>
    <role-name>*</role-name>
  </security-role>
  <security-role>
    <role-name>**</role-name>
  </security-role>

解决方法:

我想我找到了答案,把它放在这里,以便其他人可以使用它.

我试图对你进行身份验证.我在web.xml auth-constraint和security-role中设置了正确的名称,但没有运气.当我将roleBaseDn更改为真实组并将其添加到web.xml时,它开始起作用.在我发现他们在roleBaseDn中使用ou的许多例子中,不知道是因为我们AD中的某些配置还是什么但对我不起作用…

所以:

roleBaseDn = “CN =组,OU = XXX ……”

并将组添加到web.xml就是答案.

标签:java,active-directory,ldap,jetty,jaas
来源: https://codeday.me/bug/20190708/1405751.html