当前位置: 首页 > 知识库问答 >
问题:

/oauth/token处的XSRF令牌无效

晏经武
2023-03-14

Spring OAuth2实现多因素身份验证的完整代码已经上传到文件共享站点的这个链接。下面给出了在几分钟内在任何计算机上重新创建当前问题的说明。

共有1个答案

毕嘉
2023-03-14

您的CustomoAuth2RequestFactory将前一个请求放在当前请求的位置上。但是,当您进行此切换时,并没有更新旧的请求中的XSRF标记。以下是我对更新后的CustomoAuth2Request的建议:

@Override
public AuthorizationRequest createAuthorizationRequest(Map<String, String> authorizationParameters) {
    ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
    HttpSession session = attr.getRequest().getSession(false);
    if (session != null) {
        AuthorizationRequest authorizationRequest = (AuthorizationRequest) session.getAttribute(SAVED_AUTHORIZATION_REQUEST_SESSION_ATTRIBUTE_NAME);
        if (authorizationRequest != null) {
            session.removeAttribute(SAVED_AUTHORIZATION_REQUEST_SESSION_ATTRIBUTE_NAME);
//UPDATE THE STATE VARIABLE WITH THE NEW TOKEN.  THIS PART IS NEW
            CsrfToken csrf = (CsrfToken) attr.getRequest().getAttribute(CsrfToken.class.getName());
            String attrToken = csrf.getToken();
            authorizationRequest.setState(attrToken);                

            return authorizationRequest;
        }
    }

    return super.createAuthorizationRequest(authorizationParameters);
}

我正在重新考虑这个问题,因为我最初的答案草案被否决了。这个版本进一步沿着相同的道路,我相信这是正确的途径。

 类似资料:
  • 我试图通过一个到Spring(基本身份验证)安全RESTAPI的绝对URL发出POST请求 读到Angular没有为绝对URL自动将X-XSRF-TOKEN插入请求头之后,我尝试实现一个HttpInterceptor来添加TOKEN。 在我最初的 /signinPOST请求中,我创建了必要的授权:基本标头,以确保Spring验证请求。 返回的响应标头包含预期的set-cookie令牌: 但是,在我

  • 问题内容: 我正在尝试使用OAuth 2.0访问Google的文档列表API 3.0,但是遇到401错误的麻烦。 用户接受后,我的代码如下: 然后,在最后一行-getFeed()-引发异常: 这是怎么回事?在静态主测试类上,它的工作原理很吸引人,但是当我在服务器上运行它时,此行不再起作用。任何想法? 解决了 需要使用GoogleOAuthHelper而不是直接使用GoogleOAuthParame

  • 我正在更改后端每个请求的xsrf令牌cookie值。我一次对服务器进行多个http调用,但对于某些请求,“xsrf cookie”值和“x-xsrf-header”值不相同。 我试图通过参数手动添加x-xsrf-标头,但标头值不是最新的。 这是我试过的代码,

  • 我知道有些人会发表评论,比如这篇文章重复了很多问题,但是我已经尝试了很多方法来在领英Oauth中实现访问令牌。解释我所尝试的。 1)我正在关注它的官方文档LinkedIn Oauth2 2) 我已成功从步骤 2 获取授权代码,并将该代码传递给步骤 3,以交换身份验证代码以获取访问令牌。但是我收到以下错误{“error_description”:“缺少必需参数,包含无效的参数值,参数不止一次。 :无

  • 为了保护应用免受CSRF攻击,我们从服务器端设置了一个名为XSRF-TOKEN的cookie。因此,从客户端代码,我们能够设置cookie和发送到服务器,但要验证CSRF在服务器端,我们需要发送头,同时发射'POST'服务调用。由于每个角文档自动$超文本传输协议通过读取cookie设置标题X-XSRF-TOKEN(请参考链接),但是Javascript代码无法读取cookie,尽管我们已经在同一域

  • 我使用角1.0.4与ASP. NET MVC4 Web API项目。我试图利用角的CSRF保护,但没有用。我可以看到我正在传递一个名为XSRF-TOKEN的cookie,但是当角尝试在响应中添加名为X-XSRF-TOKEN的标头值时,该值显示为未定义。我试着遵循这里的建议,但是超文本标记语言还没有渲染,所以没有找到元素。 我可能会错过什么?是由ASP生成的RequestVerificationTo