验证

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

内存中的身份验证

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

  1. @Autowired
  2. public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
  3. auth
  4. .inMemoryAuthentication()
  5. .withUser("user").password("password").roles("USER").and()
  6. .withUser("admin").password("password").roles("USER", "ADMIN");
  7. }

JDBC 验证

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

  1. @Autowired
  2. private DataSource dataSource;
  3. @Autowired
  4. public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
  5. auth
  6. .jdbcAuthentication()
  7. .dataSource(dataSource)
  8. .withDefaultSchema()
  9. .withUser("user").password("password").roles("USER").and()
  10. .withUser("admin").password("password").roles("USER", "ADMIN");
  11. }

LDAP 验证

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

  1. @Autowired
  2. private DataSource dataSource;
  3. @Autowired
  4. public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
  5. auth
  6. .ldapAuthentication()
  7. .userDnPatterns("uid={0},ou=people")
  8. .groupSearchBase("ou=groups");
  9. }

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

users.ldif.

  1. dn: ou=groups,dc=springframework,dc=org
  2. objectclass: top
  3. objectclass: organizationalUnit
  4. ou: groups
  5. dn: ou=people,dc=springframework,dc=org
  6. objectclass: top
  7. objectclass: organizationalUnit
  8. ou: people
  9. dn: uid=admin,ou=people,dc=springframework,dc=org
  10. objectclass: top
  11. objectclass: person
  12. objectclass: organizationalPerson
  13. objectclass: inetOrgPerson
  14. cn: Rod Johnson
  15. sn: Johnson
  16. uid: admin
  17. userPassword: password
  18. dn: uid=user,ou=people,dc=springframework,dc=org
  19. objectclass: top
  20. objectclass: person
  21. objectclass: organizationalPerson
  22. objectclass: inetOrgPerson
  23. cn: Dianne Emu
  24. sn: Emu
  25. uid: user
  26. userPassword: password
  27. dn: cn=user,ou=groups,dc=springframework,dc=org
  28. objectclass: top
  29. objectclass: groupOfNames
  30. cn: user
  31. uniqueMember: uid=admin,ou=people,dc=springframework,dc=org
  32. uniqueMember: uid=user,ou=people,dc=springframework,dc=org
  33. dn: cn=admin,ou=groups,dc=springframework,dc=org
  34. objectclass: top
  35. objectclass: groupOfNames
  36. cn: admin
  37. uniqueMember: uid=admin,ou=people,dc=springframework,dc=org