到现在为止我们只看了一下基本的验证配置,让给我们看看一些稍微高级点的身份验证配置选项。

内存中的身份验证

我们已经看到了一个单用户配置到内存验证的示例,下面是配置多个用户的例子:

@Autowired 
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    auth 
        .inMemoryAuthentication() 
            .withUser("user").password("password").roles("USER").and() 
            .withUser("admin").password("password").roles("USER", "ADMIN"); 
} 

JDBC 验证

你可以找到一些更新来支持基于JDBC的验证。下面的例子假设你已经在应用程序中定义好了DateSource , jdbc-jc示例提供了一个完整的基于JDBC的验证。

@Autowired 
private DataSource dataSource; 

@Autowired 
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    auth 
        .jdbcAuthentication() 
            .dataSource(dataSource) 
            .withDefaultSchema() 
            .withUser("user").password("password").roles("USER").and() 
            .withUser("admin").password("password").roles("USER", "ADMIN"); 
} 

LDAP 验证

你可以找到一些更新来支持基于LDAP的身份验证,ldap-jc提供一个完成的使用基于LDAP的身份验证的示例。

@Autowired 
private DataSource dataSource; 

@Autowired 
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    auth 
        .ldapAuthentication() 
            .userDnPatterns("uid={0},ou=people") 
            .groupSearchBase("ou=groups"); 
} 

上面的例子中使用以下LDIF和嵌入式Apache DS LDAP实例。

users.ldif.

dn: ou=groups,dc=springframework,dc=org 
objectclass: top 
objectclass: organizationalUnit 
ou: groups 

dn: ou=people,dc=springframework,dc=org 
objectclass: top 
objectclass: organizationalUnit 
ou: people 

dn: uid=admin,ou=people,dc=springframework,dc=org 
objectclass: top 
objectclass: person 
objectclass: organizationalPerson 
objectclass: inetOrgPerson 
cn: Rod Johnson 
sn: Johnson 
uid: admin 
userPassword: password 

dn: uid=user,ou=people,dc=springframework,dc=org 
objectclass: top 
objectclass: person 
objectclass: organizationalPerson 
objectclass: inetOrgPerson 
cn: Dianne Emu 
sn: Emu 
uid: user 
userPassword: password 

dn: cn=user,ou=groups,dc=springframework,dc=org 
objectclass: top 
objectclass: groupOfNames 
cn: user 
uniqueMember: uid=admin,ou=people,dc=springframework,dc=org 
uniqueMember: uid=user,ou=people,dc=springframework,dc=org 

dn: cn=admin,ou=groups,dc=springframework,dc=org 
objectclass: top 
objectclass: groupOfNames 
cn: admin 
uniqueMember: uid=admin,ou=people,dc=springframework,dc=org