不管我读了多少 Spring 安全是一个陌生的概念。任何指针?
No matter how much I read Spring Security is an alien concept. Any pointers?
我有以下要求ui我需要在一个项目中实现,但是无论我阅读了多少关于 spring 安全的书籍或文章,我都无法弄清楚配置方法其实都在做。
我的要求ui意见如下
- 当对 /api/** 进行 REST 调用时,我只需要检查用户是否在 header 中包含了一个令牌,如果是这样,我需要使用内部组件。如果令牌不存在或无效,我只想 return 向客户端发送 401。
如果令牌有效,则它们通过身份验证并可以继续到相应的控制器。基于角色的身份验证不是 required,所以我假设这是 permitAll() 出现的地方?
对执行器 /info、/health 的其余调用不需要ui重新对用户进行身份验证
调用 /hawtio 和 /jolokia requi与第 1 部分相同),但如果令牌不存在,它们将被重定向到登录页面,在那里它们可以输入用户名和密码。然后使用内部服务验证用户名和密码,并将生成的令牌添加到用户 header。用户还可以注销网络 ui,这应该 return 他们到登录页面。
例如,如果我们以下面的例子为例。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
**.authorizeRequests()**
.antMatchers("/resources/**")**.permitAll()**
.anyRequest()**.authenticated()**
.and()
.formLogin()
.loginPage("/login")
**.permitAll()**
.and()
.logout()
**.permitAll()**.logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
}
我用**包围的部分有什么意义 **
我想我了解对 /resources/** 的 REST 调用直接通过,无需用户进行身份验证。但是下一行
.anyRequest().authenticated()
让我很困惑。我想我知道它是在说明所有其他请求 require 用户要进行身份验证。但是通过什么认证?您如何获得身份验证?如果未通过身份验证会怎样?
感谢任何帮助。
.authorizeRequests()
表示您要开始配置应检查对哪些端点的请求以进行授权。
.antMatchers("/resources/**")**.permitAll()**
在这里你是说所有对 /resources/**
的请求都是允许的,无需任何授权。
最后 2 个 permitAll
是为了让客户端可以访问登录端点和注销端点。
所有这些都是 spring 安全的绝对基础。并且在互联网上的许多教程中都在谈论。
如果您真的打算使用 spring 安全性,我建议您花一些时间阅读 spring 安全性 https://docs.spring.io/spring-security/reference/servlet/architecture.html 的体系结构,以便了解基础知识。不然你会过得很辛苦。
与 spring 安全文档成为朋友,因为它比教程对您的帮助要大得多。
我有以下要求ui我需要在一个项目中实现,但是无论我阅读了多少关于 spring 安全的书籍或文章,我都无法弄清楚配置方法其实都在做。
我的要求ui意见如下
- 当对 /api/** 进行 REST 调用时,我只需要检查用户是否在 header 中包含了一个令牌,如果是这样,我需要使用内部组件。如果令牌不存在或无效,我只想 return 向客户端发送 401。
如果令牌有效,则它们通过身份验证并可以继续到相应的控制器。基于角色的身份验证不是 required,所以我假设这是 permitAll() 出现的地方?
对执行器 /info、/health 的其余调用不需要ui重新对用户进行身份验证
调用 /hawtio 和 /jolokia requi与第 1 部分相同),但如果令牌不存在,它们将被重定向到登录页面,在那里它们可以输入用户名和密码。然后使用内部服务验证用户名和密码,并将生成的令牌添加到用户 header。用户还可以注销网络 ui,这应该 return 他们到登录页面。
例如,如果我们以下面的例子为例。
@Override
protected void configure(HttpSecurity http) throws Exception {
http
**.authorizeRequests()**
.antMatchers("/resources/**")**.permitAll()**
.anyRequest()**.authenticated()**
.and()
.formLogin()
.loginPage("/login")
**.permitAll()**
.and()
.logout()
**.permitAll()**.logoutRequestMatcher(new AntPathRequestMatcher("/logout"));
}
我用**包围的部分有什么意义 **
我想我了解对 /resources/** 的 REST 调用直接通过,无需用户进行身份验证。但是下一行
.anyRequest().authenticated()
让我很困惑。我想我知道它是在说明所有其他请求 require 用户要进行身份验证。但是通过什么认证?您如何获得身份验证?如果未通过身份验证会怎样?
感谢任何帮助。
.authorizeRequests()
表示您要开始配置应检查对哪些端点的请求以进行授权。
.antMatchers("/resources/**")**.permitAll()**
在这里你是说所有对 /resources/**
的请求都是允许的,无需任何授权。
最后 2 个 permitAll
是为了让客户端可以访问登录端点和注销端点。
所有这些都是 spring 安全的绝对基础。并且在互联网上的许多教程中都在谈论。
如果您真的打算使用 spring 安全性,我建议您花一些时间阅读 spring 安全性 https://docs.spring.io/spring-security/reference/servlet/architecture.html 的体系结构,以便了解基础知识。不然你会过得很辛苦。
与 spring 安全文档成为朋友,因为它比教程对您的帮助要大得多。