我正在使用部署在天蓝色环境中的REST服务。我想通过从单独的(控制台)应用程序调用各种API函数来运行一些集成测试。但REST api使用承载令牌认证。我是一个带有蔚蓝认证的总菜鸟,所以我甚至不知道它是否应该可行。
我已经尝试使用找到的here示例,但还没有运气。
无论如何,我有两个应用程序。一个是运行代码的控制台应用程序,另一个是Rest服务,我需要使用承载令牌来访问API调用。我将其称为ConsoleApp和RestService。
我运行的代码如下:
HttpClient client = new HttpClient();
string tenantId = "<Azure tenant id>";
string tokenEndpoint = $"https://login.microsoftonline.com/{tenantId}/oauth2/token";
string resourceUrl = "<RestService app id url>";
string clientId = "<azure id of the ConsoleApp>";
string userName = "derp@flerp.onmicrosoft.com";
string password = "somepassword";
string tokenEndpoint = $"https://login.microsoftonline.com/{tenantId}/oauth2/token";
var body = $"resource={resourceUrl}&client_id={clientId}&grant_type=password&username={userName}&password={password}";
var stringContent = new StringContent(body, Encoding.UTF8, "application/x-www-form-urlencoded");
var result=await client.PostAsync(tokenEndpoint, stringContent).ContinueWith<string>((response) =>
{
return response.Result.Content.ReadAsStringAsync().Result;
});
JObject jobject = JObject.Parse(result);
我回来的Json消息:
错误:invalid_grant,error_description:AADSTS50105:已登录 user未分配给应用程序&#34; RestService的角色 azureid&#34;
这是什么意思,以及如何从中获取持有人令牌需要做些什么?
答案 0 :(得分:1)
请先检查您是否启用了User assignment required
控制台应用程序:
在您的azure广告素材中,点击Enterprise applications
,在All applications
刀片中搜索您的应用,点击Properties
:
如果已启用,并且您的帐户未在您的应用中分配了访问权限角色,那么您将收到错误消息。请尝试在您的应用中指定访问角色:
在您的天蓝广告素材中,点击Enterprise applications
,在All applications
刀片中搜索您的控制台应用,点击Users and groups
,点击Add User
按钮,选择您的帐户并指定角色(编辑用户并确保select role
不是None Selected
):
请告诉我是否有帮助。