2

我正在尝试检索 Azure 授权代码,以便提取访问令牌以调用 Azure 计费 API(RateCard 和使用情况 API)。

我正在遵循微软在此处解释的 oauth 协议。我的实现如下所示。请注意,参数中的 redirect_uri 是 Azure AD 在进行身份验证后将重定向回的 uri。但是,当我尝试执行此操作时,出现以下 cors 错误:“XMLHttpRequest 无法加载” https://login.microsoftonline.com/imonlineservices.com/oauth2/authorize?res...ure.com&redirect_uri=http%3a%2f %2flocalhost%3a13333%2f&response_mode=query "。请求的资源上没有 'Access-Control-Allow-Origin' 标头。因此不允许访问源 ' http://localhost:13333 '。" 如图 2 所示。

据我了解,这告诉我“login.microsoftonline.com....”上没有“Access-Control-Allow-Origin”标头,这导致我的请求由于同源策略而失败。

现在虽然我理解这个错误,但我仍然对上面提到的链接给出的解释感到困惑,这应该有效吗?我不确定我到底哪里错了。

负责尝试检索 Auth 代码的方法:

  public void GetAuthorizationCode(string ClientId)
    {
        var @params = new NameValueCollection
        {
            {"response_type", "code"},

            { "client_id", ClientId},

            {"resource", "https://management.azure.com"},

            { "redirect_uri", "http://localhost:13333/"}
        };

        var queryString = System.Web.HttpUtility.ParseQueryString(string.Empty);
        queryString.Add(@params);

        Response.Redirect(String.Format("https://login.windows.net/common/oauth2/authorize?{0}", queryString));
    }

更新

将重定向请求直接粘贴到浏览器中时,此 ..." https://login.windows.net/common/oauth2/authorize ?{0}", queryString".. login.windows.net 返回响应(代码)作为查询字符串参数返回到我的应用程序,如下图 1 所示,这表明所有必要的 Azure 配置都已正确完成,错误仅在于我尝试检索此代码的方式。

图 1:使用查询字符串中的代码从 azure 成功重定向到我的应用程序。 成功

4

0 回答 0