微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 JHipster 中配置 Spring OAuth2 以针对 GitLab 进行无状态身份验证?

如何解决如何在 JHipster 中配置 Spring OAuth2 以针对 GitLab 进行无状态身份验证?

我已经针对 gitlab 存储库设置了 JHipster (3.9.0) 的基于 OAuth2 的安装(spring-security-oauth2-core 5.2.4)。主要遵循 https://www.jhipster.tech/security/#oauth2 但使用 gitlab 而不是 keycloak。

这是 application.yml 的摘录:

    spring: ...
     security:
      oauth2:
       client:
        provider:
          oidc:
            issuer-uri: https://gitlab.mysite.com
         registration:
          oidc:
            client-id: 1234123412322312312312312312321312321312
            client-secret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

确实,oauth2-authentication 运行良好,直到会话内部过期。当客户端返回 jsession-Id cookie 时,底层底层基础设施会抛出一个 java.lang.IllegalStateException: UT000010: Session is invalid

似乎 org.springframework.security.oauth2.client.web.HttpSessionOAuth2AuthorizationRequestRepository.saveAuthorizationRequest 将授权请求存储在用户会话中,而不关心会话管理配置:(请参阅下面的最后一行)

        @Override
    public void saveAuthorizationRequest(OAuth2AuthorizationRequest authorizationRequest,HttpServletRequest request,HttpServletResponse response) {
        Assert.notNull(request,"request cannot be null");
        Assert.notNull(response,"response cannot be null");
        if (authorizationRequest == null) {
            this.removeAuthorizationRequest(request,response);
            return;
        }
        String state = authorizationRequest.getState();
        Assert.hasText(state,"authorizationRequest.state cannot be empty");
        Map<String,OAuth2AuthorizationRequest> authorizationRequests = this.getAuthorizationRequests(request);
        authorizationRequests.put(state,authorizationRequest);
        request.getSession().setAttribute(this.sessionAttributeName,authorizationRequests);
    }

这种方法似乎与 JHipster 的基于 JWT 的无状态身份验证方法相矛盾(参见例如 https://github.com/jhipster/generator-jhipster/issues/8627)。 无论如何,spring2 OAuth2 管理似乎伪造了经典的负载平衡方法

有没有办法在 spring 中配置 OAuth2 管理以与 GitLab 无状态地工作?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。