【发布时间】:2019-08-20 10:55:31
【问题描述】:
我想通过其客户端凭据直接访问一个 API,而不是通过任何 Web 应用程序
private async Task<string> GetAutheticationToken(string APITypeSelected, string APIKeySelected=null)
{
string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"];
string tenant = ConfigurationManager.AppSettings["ida:AADTenant"];
string appKey = ConfigurationManager.AppSettings[APIKeySelected];
string apiID = ConfigurationManager.AppSettings[APITypeSelected];
//appKey = HttpUtility.UrlEncode(appKey);
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
using (HttpClient client = new HttpClient())
{
Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext authContext = null;
ClientCredential clientCredential = null;
authContext = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(authority);
//encodeURIComponent(client_secret);
clientCredential = new ClientCredential(apiID, appKey);
AuthenticationResult authResult = null;
authResult = await authContext.AcquireTokenAsync(apiID, clientCredential);
return authResult.AccessToken;
}
}
在执行时,我在这一行收到以下错误(AADSTS501051)
authResult = await authContext.AcquireTokenAsync(apiID, clientCredential);
AADSTS501051:应用程序“{API GUID}”(DEV-API) 未分配给 应用程序“{API GUID}”(DEV-API) 的角色。
我是否必须向自身授予 API 权限。
我需要做什么。
谢谢,
【问题讨论】:
标签: c# azure-active-directory azure-api-apps