gpt4 book ai didi

java - 如何对 Azure Web 应用程序使用 XSRF 保护

转载 作者:行者123 更新时间:2023-12-02 07:29:04 25 4
gpt4 key购买 nike

我正在使用 MS Azure 开发一个 Web 应用程序。后端是JAVA/Spring应用程序,前端是Javascript/Angular开发,但我认为这不相关。我的问题是来 self 前面的经过身份验证的 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 'cont<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="78191b0c38190a11151902561b1715" rel="noreferrer noopener nofollow">[email protected]</a>' from referer 'immosearchweb.azurewebsites.net'!

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

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

但是...在 Chrome 上无法更改用户代理,这对我来说是 Not Acceptable 。

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

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

提前谢谢您...

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

最佳答案

您似乎已在 Azure WebApp 上为您的 Web 应用程序启用了身份验证/授权功能。因此,如果您想进行跨站请求,有两种方法可能对您有所帮助。

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

关于java - 如何对 Azure Web 应用程序使用 XSRF 保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42427760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com