pac4j多认证客户端及授权器的执行顺序是怎样的?
pac4j多客户端配置执行逻辑答疑
客户端执行顺序相关
你观察到的结论完全正确:
Secure注解传入的客户端列表执行顺序为从右到左,你给出的配置Secure("AnonymousClient", "FacebookClient", "JWTClient")会按照JWTClient→FacebookClient→AnonymousClient的顺序依次尝试认证。- 只要任意一个客户端成功提取到有效凭证并完成身份构建,就会终止后续客户端的校验流程;如果所有客户端都无法完成有效身份构建,最终会返回401状态码。
- 注意
AnonymousClient本身的特殊逻辑:它永远会返回匿名用户凭证,如果它在客户端列表中,理论上前面所有客户端都校验失败后,走到AnonymousClient时不会触发401,如果你配置后仍拿到401,说明是后续的授权规则限制了匿名用户的访问权限。
授权器执行顺序相关
授权器的执行顺序和客户端的执行逻辑没有关联:
- 授权器的执行时机在认证流程完全结束之后,无论你通过哪个客户端完成了身份认证,所有配置的授权器都会按照你配置时的正序依次执行。
- 只有所有授权器校验全部通过,请求才会被放行;任意一个授权器校验失败,都会直接返回403状态码,不会继续执行后续授权器。
内容的提问来源于stack exchange,提问作者stackoverflowed
相关产品推荐
相关产品推荐

