zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    Object-c的类可以多重继承么?可以实现多个接口么?如何实现?
    对于TableViewCell重用机制的理解
    xcode快捷方式
    Mysql数据迁移——按分号split一列字段插入另一张表
    Android手机导出微信聊天记录
    Java性能分析工具之Jprofiler初体验
    Android adb端口被占用的解决办法
    mysql limit查询性能优化
    Delphi异或算法转换为java实现
    [python]用Python进行SQLite数据库操作
  • 原文地址:https://www.cnblogs.com/shamgod/p/5252943.html
Copyright © 2011-2022 走看看