尝试通过 AcquireTokenAsync 获取访问令牌但失败,异常主体参数必须包含 'client_secret or client_assertion'
Trying to get access token by AcquireTokenAsync but getting failed with exception body parameters must contain 'client_secret or client_assertion'
我想在没有授权码的情况下获取访问令牌,所以使用下面的方法来获取它。但我面临的问题是“请求正文必须包含以下参数'client_secret or client_assertion'”
能否就此提出必要的建议。 运行 这个在 console application
.
try
{
// Use the 'Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory' Nuget package for auth.
AuthenticationContext authContext = new AuthenticationContext(authority);
AuthenticationResult authResult = authContext.AcquireTokenAsync(resourceId, clientId, new UserCredential(crmAdminUserName, crmAdminPassword)).Result;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Azure AD 上有两种客户端,一种是public,另一种是保密的,需要在获取token的时候提供secret。
要解决此问题,您可以在这种情况下注册一个 public 客户端(本机客户端应用程序)。
Here 是有关将应用程序与 Azure 活动目录集成的有用文档。
假设门户中的 app is registered,并且您知道客户端 ID、客户端密码 key/app 密钥、权限和受众
然后此代码段将为您获取访问令牌
AuthenticationContext authContext = new AuthenticationContext(authority);
ClientCredential clientCredential = new ClientCredential(clientId, clientkey);
AuthenticationResult authenticationResult = await authContext.AcquireTokenAsync(ResourceUrl, clientCredential);
资源 Id/Resource Url 例如https://manage.windowsazure.com/{placeholder-for-your-azure-ad-tenant-name}。onmicrosoft.com
AcquireTokenAsync 文档可从 here
获得
AuthenticationContext class 文档可从 here
获得
我想在没有授权码的情况下获取访问令牌,所以使用下面的方法来获取它。但我面临的问题是“请求正文必须包含以下参数'client_secret or client_assertion'”
能否就此提出必要的建议。 运行 这个在 console application
.
try
{
// Use the 'Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory' Nuget package for auth.
AuthenticationContext authContext = new AuthenticationContext(authority);
AuthenticationResult authResult = authContext.AcquireTokenAsync(resourceId, clientId, new UserCredential(crmAdminUserName, crmAdminPassword)).Result;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Azure AD 上有两种客户端,一种是public,另一种是保密的,需要在获取token的时候提供secret。
要解决此问题,您可以在这种情况下注册一个 public 客户端(本机客户端应用程序)。
Here 是有关将应用程序与 Azure 活动目录集成的有用文档。
假设门户中的 app is registered,并且您知道客户端 ID、客户端密码 key/app 密钥、权限和受众
然后此代码段将为您获取访问令牌
AuthenticationContext authContext = new AuthenticationContext(authority);
ClientCredential clientCredential = new ClientCredential(clientId, clientkey);
AuthenticationResult authenticationResult = await authContext.AcquireTokenAsync(ResourceUrl, clientCredential);
资源 Id/Resource Url 例如https://manage.windowsazure.com/{placeholder-for-your-azure-ad-tenant-name}。onmicrosoft.com
AcquireTokenAsync 文档可从 here
获得AuthenticationContext class 文档可从 here
获得