• SPRING IN ACTION 第4版笔记-第九章Securing web applications-007-设置LDAP server比较密码(contextSource、root()、ldif()、)


    一、LDAP server在哪

    By default, Spring Security’s LDAP authentication assumes that the LDAP server is listening on port 33389 on localhost. But if your LDAP server is on another machine,you can use the contextSource() method to configure the location:

     1 @Override
     2 protected void configure(AuthenticationManagerBuilder auth)
     3 throws Exception {
     4     auth
     5         .ldapAuthentication()
     6         .userSearchBase("ou=people")
     7         .userSearchFilter("(uid={0})")
     8         .groupSearchBase("ou=groups")
     9         .groupSearchFilter("member={0}")
    10         .contextSource().url("ldap://habuma.com:389/dc=habuma,dc=com");
    11 }

    The contextSource() method returns a ContextSourceBuilder , which, among other things, offers the url() method that lets you specify the location of the LDAP server.

    二、设置LDAP server

    If you don’t happen to have an LDAP server lying around waiting to be authenticated
    against, Spring Security can provide an embedded LDAP server for you. Instead of set-
    ting the URL to a remote LDAP server, you can specify the root suffix for the embed-
    ded server via the root() method:

     1 @Override
     2 protected void configure(AuthenticationManagerBuilder auth)
     3 throws Exception {
     4     auth
     5         .ldapAuthentication()
     6         .userSearchBase("ou=people")
     7         .userSearchFilter("(uid={0})")
     8         .groupSearchBase("ou=groups")
     9         .groupSearchFilter("member={0}")
    10         .contextSource()
    11         .root("dc=habuma,dc=com");
    12 }

    When the LDAP server starts, it will attempt to load data from any LDIF files that it can
    find in the classpath. LDIF ( LDAP Data Interchange Format) is a standard way of rep-
    resenting LDAP data in a plain text file. Each record is composed of one or more lines,
    each containing a name:value pair. Records are separated from each other by blank
    lines.
    If you’d rather that Spring not rummage through your classpath looking for just
    any LDIF files it can find, you can be more explicit about which LDIF file gets loaded
    by calling the ldif() method:

     1 @Override
     2 protected void configure(AuthenticationManagerBuilder auth)
     3 throws Exception {
     4     auth.ldapAuthentication()
     5         .userSearchBase("ou=people")
     6         .userSearchFilter("(uid={0})")
     7         .groupSearchBase("ou=groups")
     8         .groupSearchFilter("member={0}")
     9         .contextSource()
    10         .root("dc=habuma,dc=com")
    11         .ldif("classpath:users.ldif");
    12 }

    Here you specifically ask the LDAP server to load its content from the users.ldif file at
    the root of the classpath. In case you’re curious, here’s an LDIF file that you could use
    to load the embedded LDAP server with user data:

     1 dn: ou=groups,dc=habuma,dc=com
     2 objectclass: top
     3 objectclass: organizationalUnit
     4 ou: groups
     5 dn: ou=people,dc=habuma,dc=com
     6 objectclass: top
     7 objectclass: organizationalUnit
     8 ou: people
     9 dn: uid=habuma,ou=people,dc=habuma,dc=com
    10 objectclass: top
    11 objectclass: person
    12 objectclass: organizationalPerson
    13 objectclass: inetOrgPerson
    14 cn: Craig Walls
    15 sn: Walls
    16 uid: habuma
    17 userPassword: password
    18 dn: uid=jsmith,ou=people,dc=habuma,dc=com
    19 objectclass: top
    20 objectclass: person
    21 objectclass: organizationalPerson
    22 objectclass: inetOrgPerson
    23 cn: John Smith
    24 sn: Smith
    25 uid: jsmith
    26 userPassword: password
    27 dn: cn=spittr,ou=groups,dc=habuma,dc=com
    28 objectclass: top
    29 objectclass: groupOfNames
    30 cn: spittr
    31 member: uid=habuma,ou=people,dc=habuma,dc=com

    Spring Security’s built-in user stores are convenient and cover the most common use
    cases. But if your authentication needs are of the uncommon variety, you may need to
    create and configure a custom user-details service.

  • 相关阅读:
    ACM的探索之Keen On Evrything But Triangle(我觉得可以很接近啦!!)
    ACM的探索之Just Skip The Problem
    ACM的探索之Everything Is Generated In Equal Probability(这真的是很有趣的话语丫!)
    心情散记
    识别有效的IP地址和掩码并进行分类统计
    网络流复习计划
    CF1076D Edge Deletion
    bzoj4563 HAOI2016放旗子
    BZOJ2152聪聪可可
    BZOJ3224普通平衡树
  • 原文地址:https://www.cnblogs.com/shamgod/p/5252943.html
Copyright © 2020-2023  润新知