当前位置:   article > 正文

spring security+Oauth2密码模式认证时,报401,Unauthorized的问题排查_spring security 401

spring security 401

第一种情况:

进行 /auth/token 的post请求时,没有进行http basic认证。

什么是http Basic认证?
http协议的一种认证方式,将客户端id和客户端密码按照“客户端ID:客户端密码”的格式拼接,并用base64编码,放在
header中请求服务端。例子如下:
Authorization:Basic ASDLKFALDSFAJSLDFKLASD=
ASDLKFALDSFAJSLDFKLASD= 就是 客户端ID:客户端密码 的64编码

spring security中的认证主要就是通过一连串的过滤器来做的各种验证。http basic认证的过滤器为 BasicAuthenticationFilter。

下图为BasicAuthenticationFilter中的过滤器执行方法,如果authRequest为空,即header中没有传 Authorization 。

 

 继续往下执行,会执行到 AnonymousAuthenticationFilter 中 doFilter 方法。如下图所示,最终 spring security的会话SecurityContextHolder中会存放一个匿名的认证信息,AnonymousAuthenticationToken,在最终的决策管理器AccessDecisionManager中会导致投票失败。

 

 下图为 AffirmativeBased 决策管理器抛出的 access denied 异常。

 

第二种情况:

ClientDetailsServiceConfigurer配置中的clientDetailsService要确保配置成功或者不使用数据库存放数据时要确保clientDetail信息

正确存放到内存memory中。因为spring security执行过程中先去内存中获取,获取不到再去配置的数据库中获取,如果还获取不到,最终也会抛出401 Unauthorized异常。如下图所示

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/684563
推荐阅读
相关标签
  

闽ICP备14008679号