1

我遵循了 SinglePageApp-DotNet 示例,它运行良好。

然后我想让单页应用程序调用一个启用 CORS 的 web api。这两个应用程序都由 AAD 保护并部署到 Azure 网站,我无法让它工作。我按照https://github.com/omercs/corsapisamplehttps://github.com/matvelloso/AngularJSCORS的示例对每个单词进行了操作,但出现“此请求的授权已被拒绝”错误。

当我禁用控制器操作的 [Authorize] 属性时,它起作用了。所以我认为CORS设置是正确的。从日志中我可以看到 CORS 预检(OPTION 调用)成功。

知道如何解决问题吗?非常感谢您的帮助。

4

2 回答 2

0

供参考。我们现在有一个官方示例,演示了如何将 CORS 与 ADAL JS 和 Angular 一起使用。您可以在https://github.com/AzureADSamples/SinglePageApp-WebAPI-AngularJS-DotNet中找到代码和详细说明

于 2015-02-23T08:49:05.430 回答
0

如果您从 CORS api 端点看到 401 响应代码,则表示您的服务不接受令牌。您需要匹配令牌中的受众和 cors api 项目配置中的受众。

  1. 在 Azure AD- 项目 1 中注册 CORS API 项目
  2. 找到应用程序密钥 ida:Tenant 并将值替换为您的 AAD 租户名称
  3. 找到应用密钥 ida:Audience 并将值替换为从 Azure 门户复制的应用 ID URI。
  4. 启用示例中的 cors
  5. 在 Azure AD-项目 2 中注册单页应用程序
  6. 授予项目1的权限
  7. 在“其他应用程序的权限”部分,单击“添加应用程序”。在“显示”下拉菜单中选择“其他”,然后单击上方的复选标记。找到并单击 To Go API,然后单击底部的复选标记以添加应用程序。从“Delegated Permissions”下拉列表中选择“Access To Go API”,然后保存配置。

启用 Oauth2 隐式:

默认情况下,Azure AD 中预配的应用程序未启用使用 OAuth2 隐式授权。使用 Azure AD 部分中应用配置中的“管理清单”按钮,下载应用程序的清单文件并将其保存到磁盘。使用文本编辑器打开清单文件。搜索 oauth2AllowImplicitFlow 属性。你会发现它被设置为false;将其更改为 true 并保存文件。使用 Manage Manifest 按钮,上传更新的清单文件。保存应用程序的配置。

如果有任何问题,您可以使用 Fiddler 获取令牌并检查它们。如果权限设置正确,CORS API 端点将接受令牌。

于 2015-02-03T16:02:44.920 回答