这就是我编写代码并尝试获取输出的方法。
请求正文必须包含以下参数:
client_secret
或client_assertion
static async Task<AuthenticationResult> getAccessToken()
{
string hardcodedUsername = "";
string hardcodedPassword = "";
string tenantName = "projectwidgets.com";
string authString = "https://login.microsoftonline.com/" + tenantName;
AuthenticationContext authenticationContext = new AuthenticationContext(authString, false);
//Config for OAuth client credentials
string clientId = "as";
string key = "kk";
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenantName);
var authContext = new AuthenticationContext(authority);
AuthenticationResult result = null;
try
{
result = await authContext.AcquireTokenAsync("https://pwsnapitazure.azurewebsites.net", clientId, new UserPasswordCredential(hardcodedUsername, hardcodedPassword));
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
System.Diagnostics.Debug.WriteLine(ex.Message);
}
return result;
}
答案 0 :(得分:3)
答案 1 :(得分:0)
尝试使用UsernamePasswordCredential凭据访问Azure资源时,出现以下错误。
这是因为为Azure AD中注册的应用程序禁用了“允许公共客户端流”。
启用它可以为我们解决问题。
答案 2 :(得分:0)
更正 ClientId 和 Authority 值对我来说很神奇。