• 41.3 Authentication Services认证服务


    在Spring Security 3.0之前,身份验证管理器AuthenticationManager 是在内部自动注册的。现在,您必须使用<authentication-manager>元素显式注册一个。这将创建Spring Security的ProviderManager类的一个实例,它需要用一个或多个AuthenticationProvider实例的列表进行配置。这些可以使用命名空间提供的语法元素创建,也可以是标准bean定义,使用身份验证提供程序元素标记为添加到列表中。

    41.3.1 <authentication-manager>

    每个使用名称空间的Spring Security应用程序都必须在某个地方包含这个元素。它负责注册身份验证管理器,该管理器为应用程序提供身份验证服务。创建身份验证提供程序实例的所有元素都应该是该元素的子元素。

    <authentication-manager> Attributes

    • alias 此属性允许您为内部实例定义别名,以便在您自己的配置中使用。其用途在美国空间介绍中有所描述。
    • erase-credentials 如果设置为true,一旦用户通过身份验证,身份验证管理器将尝试清除返回的身份验证对象中的任何凭据数据。实际上,它映射到提供程序管理器的erasecretedentialsafteratrantination属性。这将在核心服务一章中讨论。
    • id 此属性允许您为内部实例定义一个id,以便在您自己的配置中使用。它与别名元素相同,但是提供了与使用id属性的元素更加一致的体验。

    Child Elements of <authentication-manager>

    41.3.2 <authentication-provider>

    除非与ref属性一起使用,否则此元素是配置DaoAuthenticationProvider的简写。DaoAuthenticationProvider从用户详细信息服务UserDetailsService 加载用户信息,并将用户名/密码组合与登录时提供的值进行比较。可以通过使用可用的命名空间元素(jdbc-user-service)或者通过使用user-service-ref属性指向应用程序上下文中其他地方定义的bean来定义UserDetailsService实例。您可以在名称空间介绍中找到这些变体的例子。

    <authentication-provider> Attributes

    • ref 定义对实现身份验证提供程序AuthenticationProvider的Spring bean的引用。

    如果您已经编写了自己的身份验证提供程序实现(或者出于某种原因想要将Spring Security自己的一个实现配置为传统bean),那么您可以使用以下语法将其添加到提供程序管理器的内部列表中:

    1 <security:authentication-manager>
    2 <security:authentication-provider ref="myAuthenticationProvider" />
    3 </security:authentication-manager>
    4 <bean id="myAuthenticationProvider" class="com.something.MyAuthenticationProvider"/>
    • user-service-ref 对实现用户详细信息服务UserDetailsService 的bean的引用,可以使用标准bean元素或自定义用户服务元素来创建。

    Child Elements of <authentication-provider>

    41.3.3 <jdbc-user-service>

    导致创建基于JDBC的用户详细信息服务。

    <jdbc-user-service> Attributes

    • authorities-by-username-query:一个查询给定用户名的用户授权的SQL语句。
    1 select username, authority from authorities where username = ?
    • cache-ref 定义对缓存的引用,供用户详细信息服务使用。
    • data-source-ref 提供所需表的数据源的bean标识。
    • group-authorities-by-username-query 一个查询给定用户名的用户组权限的SQL语句。默认值为

    • 1 select
      2 g.id, g.group_name, ga.authority
      3 from
      4 groups g, group_members gm, group_authorities ga
      5 where
      6 gm.username = ? and g.id = ga.group_id and g.id = gm.group_id
    • id 一个bean标识符,用于引用上下文中其他地方的bean。
    • role-prefix 一个非空字符串前缀,将被添加到从永久存储中加载的角色字符串中(默认为“ROLE_”)。在默认值为非空的情况下,使用值“无”表示没有前缀。
    • users-by-username-query 一个查询用户名、密码和给定用户名的启用状态的SQL语句。默认值为

    • 1 select username, password, enabled from users where username = ?

    41.3.4 <password-encoder>

    身份验证提供程序可以选择配置为使用密码编码器,如命名空间介绍中所述。这将导致向该bean注入适当的PasswordEncoder实例,可能还附带一个SaltSource bean来提供用于哈希的盐值。

    Parent Elements of <password-encoder>

    <password-encoder> Attributes

    • base64 字符串是否应该进行base64编码
    • hash 定义用于用户密码的哈希算法。我们强烈建议不要使用MD4,因为它是一个非常弱的哈希算法。
    • ref 定义对实现PasswordEncoder的Spring bean的引用。

    Child Elements of <password-encoder>

    41.3.5 <salt-source>

    密码加盐策略。可以使用系统范围的常数或用户详细信息对象的属性。

    <salt-source> Attributes

    • ref 定义对Spring bean标识的引用。
    • system-wide 将用作密码编码器的盐的单个值。
    • user-property 用户详细信息UserDetails 对象的一个属性,将被密码编码器用作盐。通常会用到类似“username”的东西。

    41.3.6 <user-service>

    从属性文件或“用户”子元素列表创建内存中的用户详细信息服务。用户名在内部转换为小写,以允许不区分大小写的查找,因此如果需要区分大小写,就不应该使用这种方式。

    <user-service> Attributes

    • id 一个bean标识符,用于引用上下文中其他地方的bean。
    • properties 属性文件的位置,每行的格式为 用户名=密码,授予权限[,授予权限][,启用|禁用] <用户服务>的子元素 username=password,grantedAuthority[,grantedAuthority][,enabled|disabled]

    Child Elements of <user-service>

    41.3.7 <user>

    表示应用程序中的用户。

    <user> Attributes

    • authorities 授予用户的多个权限之一。用逗号(但没有空格)分隔权限。例如,“ROLE_USER,ROLE_ADMINISTRATOR”
    • disabled 可以设置为“真”,将帐户标记为禁用和不可用。
    • locked 可以设置为“真”,将帐户标记为锁定和不可用。
    • name 分配给用户的用户名。
    • password 分配给用户的密码。如果相应的身份验证提供程序支持哈希,则可以对其进行哈希处理(请记住设置“用户服务”元素的“哈希”属性)。如果数据不用于身份验证,而仅用于访问权限,则可以省略该属性。如果省略,命名空间将生成一个随机值,防止其被意外用于身份验证。不能为空。
  • 相关阅读:
    黄聪:数据库基础
    黄聪:(C#)利用反射动态调用类成员[转载]
    黄聪:SQL 2005 全文索引
    黄聪:自动化测试的7个步骤
    黄聪:队列Queue笔记
    黄聪:VMware三种网络连接方式的概念
    Nginx 模块细节详探
    munin因为plugin而亮
    Zookeeper简介
    Munin进阶使用
  • 原文地址:https://www.cnblogs.com/jrkl/p/13512496.html
Copyright © 2020-2023  润新知