【发布时间】:2019-03-21 04:54:38
【问题描述】:
这是我获取访问令牌的代码:
HttpClient clie = new HttpClient();
string tokenEndpoint = "https://login.microsoftonline.com/{directoryID}/oauth2/token";
var body = "resource=https://analysis.windows.net/powerbi/api&client_id=clientID&grant_type=password&username=myADusername&password=myADpassword";
var stringContent = new StringContent(body, Encoding.UTF8, "application/x-www-form-urlencoded");
var result = await clie.PostAsync(tokenEndpoint, stringContent).ContinueWith<string>((response) =>
{
return response.Result.Content.ReadAsStringAsync().Result;
});
JObject jobject = JObject.Parse(result);
var token = jobject["access_token"].Value<string>();
我正在使用我的 Azure AD 用户名和密码来获取令牌。我在我的 MVC 应用程序 var credential = new UserPasswordCredential(Username,Password); 中使用了相同的凭据,效果很好。但是在这个 .NET core 2.0 应用程序中,它给了我一个错误,说无效授权。用户名或密码无效。这些是我用来获取令牌的相同凭据,授权类型设置为密码。我在做什么有什么问题?
【问题讨论】:
-
您需要对这些值进行 URL 编码。您可以使用
FormUrlEncodedContent而不是StringContent以更简单的方式完成所有操作。 -
我尝试过使用 Postman,但它给了我同样的错误。
标签: rest azure jwt access-token azure-api-apps