为Azure Rest Webapi应用程序启用CORS

时间:2018-11-14 10:38:25

标签: rest azure oauth-2.0 cors azure-active-directory

我有一个简单的jQuery页面,该页面调用Azure宁静API以获取VM的状态。 我遇到的一个问题是,它抱怨跨源资源共享,而我找不到在哪里为我拥有的Web应用程序/ API设置它。

我正在使用客户凭据授予来获取令牌 https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-oauth2-client-creds-grant-flow

我已经完成测试,当我尝试从jQuery / JS进行呼叫时,出现了CORS问题。

我的设置涉及: 在Azure门户中,我使用应用程序注册来注册类型为“ Web应用程序/ API”的应用程序,并为其提供主页地址“这是它的住所”,并创建了密钥。

使用

POST https://login.microsoftonline.com/<tenant id>/oauth2/token
grant_type=client_credentials
client_id=application id
client_secret=application key
resource=https://management.core.windows.net/

我错过了什么吗?我的搜索不断将我引向Azure托管应用

2 个答案:

答案 0 :(得分:1)

不能使用前端Javascript中的客户端机密。 您的客户秘密将是公开的,基本上是您应用的密码。

客户端凭据授予用于后端应用程序。

您需要使用例如使用ADAL.JS / MSAL.JS的隐式授予流来获取令牌。 您的前端应用也是公共客户端,因此也应该注册为Native。

这是一个示例应用程序:https://github.com/Azure-Samples/active-directory-javascript-singlepageapp-dotnet-webapi

哦,CORS错误来自Azure AD的令牌终结点。 您对此无能为力。

答案 1 :(得分:1)

好的,这是简短的说明:

  1. 添加功能应用程序(按请求收费)
  2. 打开新创建的功能应用程序
  3. 在“代理”中,从右列表中选择它
  4. 命名,路由模板将是您的新端点URL,后端URL 是您的登录端点,例如:https://login.microsoftonline.com/ / oauth2 / token
  5. 然后,返回到功能应用程序,选择“平台功能”选项卡,选择“ CORS”,将其全部删除,然后输入您的应用程序URL或仅输入*

您可以更具体地说明这些,但这足以获得令牌。而且所有其他端点都没有CORS问题。

祝你好运。