spring - 为什么spring security oauth2客户端需要AuthorizationRequestRepository?

标签 spring spring-boot spring-security spring-security-oauth2

我在应用 spring oauth2 客户端时遇到问题。

我发现 org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter想要创建一个 OAuth2AuthorizationRequest并通过 authorizationRequestRepository 临时存储.

相关代码:

// OAuth2AuthorizationRequestRedirectFilter.class
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) {
    OAuth2AuthorizationRequest authorizationRequest = this.authorizationRequestResolver.resolve(request);
    ...
    this.sendRedirectForAuthorization(request, response, authorizationRequest);
    ....
}

private void sendRedirectForAuthorization(HttpServletRequest request, HttpServletResponse response,
                                                OAuth2AuthorizationRequest authorizationRequest) {
    ...
    this.authorizationRequestRepository.saveAuthorizationRequest(authorizationRequest, request, response);
    ...

}

文档中指出,默认实现是将其存储在 HttpSession 中,如果需要,可以将其存储在 cookie 中。

相关文档:https://docs.spring.io/spring-security/site/docs/5.0.7.RELEASE/reference/html/oauth2login-advanced.html#oauth2login-advanced-authorization-request-repository

问题)

但是我不理解。为什么不应该 authorizationRequest对象存储在内存中?
不知道为什么spring security提供了AuthorizationRequestRepository接口(interface),所以我可以使用 Session 或 Cookie。

最佳答案

您希望将其存储以供将来的请求使用,因为您不想对每个请求执行 OAuth 流。

关于spring - 为什么spring security oauth2客户端需要AuthorizationRequestRepository?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56413165/

相关文章:

spring - 实现 BeanPostProcessor spring 5 + java 9

java - 无法使用 MongoRepository 从 Spring 保存 Mongo DB 中的值

java - ExceptionMappingAuthenticationFailureHandler 没有捕获我的异常

json - Spring Boot 在 json 中包含 ID 字段

java - 登录表单 : @RequestMapping cannot handle the POST request

java - 如何在自定义过滤器中使用 Java 配置注入(inject) AuthenticationManager

java - 在数据库中保存 BCryptPasswordEncoder 时出错

java - 在没有 Web 服务器的 Spring-Boot 应用程序中,保持它运行的正确方法是什么?

java - 添加 HttpServletResponse/HttpServletRequest 作为方法参数时 Spring 请求挂起

web - favicon.ico 未找到错误?