安全上

我刚刚宣布了新消息学习Spring Security课程,包括Spring Security 5中新的OAuth2堆栈的完整材料:

>>查看课程

1.概述

本教程将展示如何设置一个Spring Security中的身份验证提供者与标准场景相比,允许使用简单的UserDetailsService

2.身份验证提供者

Spring Security为执行身份验证提供了多种选项。这些都遵循一个简单的合同-一个身份验证请求由一个AuthenticationProvider返回一个具有完整凭据的完全身份验证对象。

标准的和最常见的实现是DaoAuthenticationProvider——它从一个简单的只读用户DAO中检索用户详细信息UserDetailsService。此用户详细信息服务只能访问用户名以便检索完整的用户实体。这对于大多数场景来说已经足够了。

更多的自定义场景仍然需要访问完整的身份验证请求能够执行身份验证过程。例如,当针对某些外部的第三方服务(例如人群) - - -这两个用户名密码从身份验证请求将是必要的

对于这些更高级的场景,我们需要定义自定义身份验证提供程序:

@Component public class CustomAuthenticationProvider implements AuthenticationProvider {@Override public Authentication authenticate(Authentication Authentication) throws AuthenticationException {String name = Authentication . getname ();password = authentication.getCredentials().toString();if (shouldAuthenticateAgainstThirdPartySystem()){//使用凭证//和第三方系统认证返回新UsernamePasswordAuthenticationToken(name, password, new ArrayList<>());} else{返回null;@Override public boolean supports(Class

注意,授予的权力设置在返回身份验证对象是空的。这是因为权限当然是特定于应用程序的。

3.注册认证提供程序

现在我们已经定义了身份验证提供者,我们需要在XML安全配置中使用可用的名称空间支持来指定它:

 < /**" access="isAuthenticated()"/>      .

4.Java配置

接下来,让我们看看相应的Java配置:

@Configuration @EnableWebSecurity @ComponentScan("com.金宝搏188体育baeldung.security") public class SecurityConfig extends WebSecurityConfigurerAdapter {@Autowired private CustomAuthenticationProvider authProvider;@Override protected void configure(AuthenticationManagerBuilder auth) throws Exception {auth. authenticationprovider (authProvider);} @Override protected void configure(HttpSecurity http) throws Exception {http. authorizerequests ().anyRequest().authenticated() .httpBasic();}}

5.执行身份验证

无论是否在后端有这个自定义身份验证提供者,从客户机请求身份验证基本上都是一样的。

让我们用一个简单的旋度发送验证请求的命令:

-i——user user1:user1Pass http://localhost:8080/spring-security-custom/api/foo/1

出于本例的目的,我们已经用基本身份验证保护了REST API。

我们从服务器上得到预期的200 OK:

HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=B8F0EFA81B78DE968088EBB9AFD85A60;路径= / spring-security-custom /;HttpOnly Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Sun, 02 june 2013 17:50:40 GMT

6.结论

在本文中,我们讨论了一个用于Spring安全性的自定义身份验证提供者示例。

本教程的完整实现可以在下面找到GitHub项目

安全底

我刚刚宣布了新消息学习Spring Security课程,包括Spring Security 5中新的OAuth2堆栈的完整材料:

>>查看课程
13评论
最古老的
最新的
内联反馈
查看所有评论
本文评论关闭!