我正在尝试按照Azure示例通过此处提供的WSFederation将Azure AD集成到我的MVC 4.6 Web应用程序中 https://github.com/Azure-Samples/active-directory-dotnet-webapp-wsfederation
此示例按预期工作。但是,当我在同一个MVC项目中添加WebApi控制器并使用[Authorize]进行装饰时,它会出错。我在这个新添加的WebApi控制器中有一个GET方法的ajax请求。
错误是:
XMLHttpRequest cannot load https://login.microsoftonline.com/85c96496-fbc6-4bf3-bfcc-fb51ca874527/wsfe…UIWNgv-EANzWADAQPCOqF--3c7KGt6G21ucvLkce_wMcwVguKz62ioyGPxQg&wa=wsignin1.0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost:4279' is therefore not allowed access.
感谢您的帮助!
答案 0 :(得分:0)
在为Web API添加Authorize
标记后,您需要在调用Ajax之前登录Web应用程序以请求此Web API。然后,Ajax请求将自动发送cookie以进行身份验证,并返回正确的结果。
如果在登录前调用Web API的Ajax请求,由于Web API受到保护且Web应用程序正在与Azure AD集成,该请求将重定向到Azure AD的登录页面,这是不允许的跨域请求。这就是这个问题的根本原因。