【问题标题】:LDAP authentication without managerDN and manager password没有 managerDN 和 manager 密码的 LDAP 身份验证
【发布时间】:2014-12-15 20:29:11
【问题描述】:

我正在 Java Spring 框架中编写一个应用程序来执行 Active Directory LDAP 身份验证。 我已成功连接到我的组织 LDAP。

这里是配置设置:Spring-security.xml

<!-- This is where we configure Spring-Security -->
<security:http auto-config="true" use-expressions="true"
    access-denied-page="/oops">

    <security:intercept-url pattern="/auth/*"
        access="isAuthenticated()" />


    <security:logout invalidate-session="true"
        logout-success-url="/" logout-url="/logout" />

</security:http>

<security:authentication-manager>
    <security:ldap-authentication-provider
        user-search-filter="(&amp;(sAMAccountname={0})(objectCategory=user))"
        user-search-base="DC=am, DC=example, DC=com" group-search-filter="(&amp;(sAMAccountname={0})(objectCategory=group))"
        group-search-base="DC=am, DC=example, DC=com">
    </security:ldap-authentication-provider>
</security:authentication-manager>




<security:ldap-server url="ldaps://myserver.am.example.com:4567"
manager-dn="CN=Johnson \, Mitchell, OU=San Francisco,DC=am,DC=example,DC=com"
manager-password="sdvsdvsvs" />

我的问题是,有没有什么方法可以在 security:ldap-server 标记中不提供 manager-dn 和 manager-password 的情况下验证 LDAP。 请提供解决方案。提前致谢。

【问题讨论】:

    标签: spring-security ldap basic-authentication spring-ldap


    【解决方案1】:

    定义具有必要权限的管理用户并使用该权限。您当然不应该将 managerDN 用于应用程序中的任何内容。

    【讨论】:

    • 谢谢。如何进行上述设置,我的意思是定义一个管理员用户?
    【解决方案2】:

    是的,这是可能的:您可以让实际登录的用户自己连接到 LDAP 以测试他的凭据并获取其用户数据。

    AuthenticationManager 配置:

    @Override
    protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
        ActiveDirectoryLdapAuthenticationProvider activeDirectoryLdapAuthenticationProvider = new ActiveDirectoryLdapAuthenticationProvider(domain, url, rootDn);
        activeDirectoryLdapAuthenticationProvider.setSearchFilter(searchFilter);
        auth.authenticationProvider(activeDirectoryLdapAuthenticationProvider);
    }
    

    Spring 安全性做了两件事:

    • 让用户使用自己的用户名和密码登录
    • 查找用户以获取用户信息、组等。对于此步骤,您必须指定一个可以根据用户名查找用户的 searchFilter,例如“userPrincipalName={0}”,其中 {0} 是提供的用户名.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-01
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多