在上一篇胖哥和大家共同体验了OAuth2登录流程,直观感受了OAuth2,本篇我们来共同分析一下OAuth2登录的流程,本次分析将严重依赖trace日志。
流程分析
①访问被拒绝
/foo/hello
发起请求后会经过一系列过滤器链的过滤触发访问被拒绝,核心的日志如下:
- 进入HTTP资源安全处理过滤器
FilterSecurityInterceptor
。 - 发现本次
/foo/hello
请求是一个匿名请求。 - 而实际上
/foo/hello
需要非匿名认证。 - 访问决策投票器
WebExpressionVoter
做出了拒绝授权投票(Voted to deny authorization)。 - 在基于肯定(AffirmativeBased)的访问策略下本次请求授权失败,抛出
AccessDeniedException
异常。 - 异常响应过滤器
ExceptionTranslationFilter
对步骤⑤抛出的异常进行处理。