【问题标题】:How to work with XSRF protection for Azure Web application如何为 Azure Web 应用程序使用 XSRF 保护
【发布时间】:2017-07-14 15:26:24
【问题描述】:

我正在使用 MS Azure 开发一个 Web 应用程序。后端是 JAVA/Spring 应用,前端是 Javascript/Angular 开发,但我觉得不相关。 我的问题是来自我前面的经过身份验证的 POST 请求被 azure XSRF 保护阻止,我找不到任何有关它的信息。为了清楚起见,未经身份验证的请求以及经过身份验证的 GET 请求都可以顺利通过。但是,任何经过身份验证的 POST 都会生成类似于以下内容的日志:

2017-02-23T22:44:46  PID[2668] Verbose Received request: POST https://immosearchapi.azurewebsites.net/profile

2017-02-23T22:44:46  PID[2668] Verbose Found 'AppServiceAuthSession' cookie for site 'immosearchapi.azurewebsites.net'. Length: 556.

2017-02-23T22:44:46  PID[2668] Information Sending response: 403.60 Forbidden

2017-02-23T22:44:46  PID[2668] Warning Cross-site request forgery detected for user 'contact@arimaz.com' from referer 'immosearchweb.azurewebsites.net'!

我找到了这个回复: Azure website Rest Api only accept GET, POST returns 403. Possibly CORS

这实际上是一种可能的解决方法,因为更改 Use-Agent 标头会有效地禁用此请求的 XSRF 保护。

但是...在 Chrome 上无法更改用户代理,这在我的情况下是不可接受的。

那么有没有办法完全禁用 Azure 后端的 XSRF(因为在这个阶段安全并不是真正的问题)?

或者我在哪里可以找到有关预期 cookie 和/或请求被接受的标头的文档?

提前谢谢你...

更新: 这并不是我自己问题的真正答案,但作为更新,我针对此问题的解决方法是将项目架构更改为单服务器方法。我更新了我的 Spring 应用程序以服务于前端以及 Rest API,以避免 Azure 出现 CORS 和 XSRF 问题。我一直无法使 ADAL 工作,而且它似乎只支持 MS 帐户,无论如何这对我来说不是一个解决方案。

【问题讨论】:

    标签: java angularjs azure csrf


    【解决方案1】:

    您似乎为 Azure WebApp 上的 Web 应用程序启用了 Authentication / Authorization 功能。所以如果你想做跨站请求,有两种方法可能对你有帮助。

    1. 在您当前的场景中使用Adal.jsAdal-Angular,请按照ADAL for JS 的README 内容更改您的代码。还有一个blog 介绍了adal js 库。
    2. 根据我的经验,您可以在immosearchweb.azurewebsites.net 上为角度请求调用创建一个类似的接口,并使用Java 中的HttpClient 传递请求参数和正文以调用immosearchapi.azurewebsites.net 上的接口。看起来很简单。

    【讨论】:

    • 身份验证显然是问题的根源。我设法让 ADAL for js 工作,但我不知道如何向我的后端 API 发出经过身份验证的请求(Azure 身份验证真的令人困惑)。所以基本上它并没有解决我的问题,我仍然得到 403 响应。您是否有任何关于选项 2 的信息。尝试在没有 ADAL 的情况下生成经过身份验证的请求?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    相关资源
    最近更新 更多