我正在尝试检索Azure授权代码,以便我可以提取访问令牌以调用Azure Billing API(RateCard和Usage API)。
我正在遵循Microsoft here 解释的oauth协议。我的实现如下所示。请注意,params中的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'标头。来源'{{3}因此不允许访问。“如图2所示。
据我了解,这告诉我“login.microsoftonline.com ....”上没有“Access-Control-Allow-Origin”标题,导致我的请求因同源而失败政策。
现在虽然我理解了这个错误,但我仍然对上面提到的http://localhost:13333给出的解释感到困惑,这应该有用吗?我不确定我到底哪里错了。
负责尝试检索身份验证代码的方法:
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));
}
更新
将重定向请求直接粘贴到浏览器中时,这个...“the link?{0}”,queryString“.. login.windows.net将响应(代码)作为查询返回给我的应用程序string参数如下面的图1所示,它向我表明所有必要的Azure配置都已正确完成,而错误只取决于我是如何尝试检索此代码的。
图1:使用查询字符串中的代码成功从azure重定向到我的应用程序。 https://login.windows.net/common/oauth2/authorize