azure - 如何修复 - 重新登录时,CORS 策略已阻止访问“https://login.windows.net......”获取
问题描述
我的 React / ASP.net 核心 Web API 应用程序和 Azure AD 身份验证出现问题。
第一次登录,一切正常。然后,如果我退出,我会看到 Microsoft 托管的“您已退出。返回网站”页面,其中包含返回网站的链接。如果我然后单击该链接,则应用程序在尝试进行身份验证时会挂起,并且我的 Chrome 浏览器控制台中出现 CORS 错误:
访问“ https://login.windows.net/XXXXX/oauth2/authorize?response_type=id_token&redirect_uri= (etc)”获取(重定向自“ https://uat.xxxxx.com/coreservice/api/foo?page =1&pageSize=25 ') 来自原点 ' https://uat.xxxxx.com ' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有 'Access-Control-Allow-Origin' 标头出现在请求的资源上。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
额外信息:
作为一项实验,我从网络上的其他地方托管了一个指向该站点的链接,如果我单击该链接,我会遇到同样的问题行为。
如果此时我用力刷新页面,那么一切正常 - 我按预期显示了 MS Azure 登录页面。
任何帮助将不胜感激!
解决方案
不确定您是否使用 Azure Web 应用程序来托管您的应用程序,但我遇到的问题是我在 Azure 门户的身份验证/授权下使用了应用服务身份验证设置。此设置指向 Azure AD 实例。但是我也使用了包裹在我的应用程序周围的React-ADAL npm 包,因此这会导致冲突的问题,因为它们都使用相同的 Azure AD 实例。
我关闭了 Azure 门户中的应用服务身份验证设置,一切都从那里开始工作。
此设置确实有效,因为我已将其与其他应用程序和简单的 Web 应用程序一起使用,但我意识到 Azure App Auth 设置与 React-ADAL npm 包冲突。
希望这可以帮助。
推荐阅读
- docker - `opensuse/tumbleweed` docker 中的 `lsb_release -a`
- hibernate - 在休眠中映射视图和表
- ios - 在表单或列表中打开 fullscreenCover 或工作表时,第一次调用时传递给工作表内容的对象为零
- android - 带有导航组件和导航抽屉的单活动应用程序
- java - Wi-Fi 建议实际上如何适用于 Android 11?
- powershell - 屏幕截图路径模式不适用于 Azure Pipeline 中的 powershell
- postgresql - ModuleNotFoundError:没有名为“psycopg2”的模块 - 数据流
- android - 如何在 Android Jetpack Navigation 中制作动态起始目的地
- python - 在 Matplotlib 中绘制具有 90 度角线的序列
- node.js - body-parser 忽略类型参数