【问题标题】:Enable CORS for Azure Rest webapi application为 Azure Rest webapi 应用程序启用 CORS
【发布时间】:2019-04-17 07:15:50
【问题描述】:

我有一个简单的 jQuery 页面,它调用 azure restful 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 托管应用

【问题讨论】:

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


    【解决方案1】:

    好的,简而言之就是这样:

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

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

    祝你好运。

    【讨论】:

    • 这是一个非常好的解决方案,谢谢! Portal UI 变化很大,目前您可以在“概览”的“功能”选项卡下找到 CORS 选项。
    【解决方案2】:

    不能使用来自前端 Javascript 的客户端密码。 您的客户端密码是公开的,基本上就是您应用的密码。

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

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

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

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

    【讨论】:

    • 我需要一些不要求用户登录的东西,我们在此之上还有另一个本地身份验证。公开密码不是问题,因为它只有少数人可以访问。这就是我使用客户端凭据的原因。
    • 我已经解决了这个问题,我会在完成所有操作后发布我所做的答案。但到目前为止,我能够获得令牌:D
    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 2016-07-03
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 2017-02-22
    相关资源
    最近更新 更多