Я хочу создать токен-носитель Azure AD с помощью вызова C # REST. Я хочу написать логику регистрации пользователя внутри вызова API. Я использую это как конечную точку токена:
https://login.windows.net/[tenant-id]/oauth2/token
Я выполнил ту же процедуру, что описана в эту статью.
Я использую учетные данные пользователя «Глобальный администратор».
Но я все еще получаю сообщение об ошибке «Несанкционировано». Ниже приведены фрагмент кода и тело ответа.
Код
using (HttpClient client = new HttpClient())
{
var tokenEndpoint = @"https://login.windows.net/<tanent-name>/oauth2/token";
var accept = "application/json";
client.DefaultRequestHeaders.Add("Accept", accept);
string postBody = @"resource=https%3A%2F%2Fgraph.microsoft.com%2F
&client_id=<client-id>
&grant_type=password
&username=<admin-user-name>
&password=<admin-pass>
&scope=openid";
using (var response = await client.PostAsync(tokenEndpoint, new StringContent(postBody, Encoding.UTF8, "application/x-www-form-urlencoded")))
{
if (response.IsSuccessStatusCode)
{
var jsonresult = JObject.Parse(await response.Content.ReadAsStringAsync());
var token = (string)jsonresult["access_token"];
return token;
}
else
return null;
}
}
Тело ответа
{ StatusCode: 401, ReasonPhrase: 'Unauthorized',
Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Pragma: no-cache
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
x-ms-request-id: cabefe46-ff73-4659-80a2-2f4136200900
Cache-Control: no-store, no-cache
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN"
Set-Cookie: esctx=AQABAAAAAADX8GCi6Js6SK82TsD2Pb7...
Set-Cookie: x-ms-gateway-slice=004; path=/; secure; HttpOnly
Set-Cookie: stsservicecookie=ests; path=/; secure; HttpOnly
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Thu, 24 May 2018 13:43:39 GMT
Content-Length: 457
Content-Type: application/json; charset=utf-8
Expires: -1
}}
P.S.- Также укажите, есть ли другой способ добавить нового пользователя без вызова REST. Я не хочу регистрировать пользователя в клиентском приложении.
[Обновление] Пожалуйста, найдите снимок экрана с добавленными разрешениями и ролями.
login.microsoftonline.com
. Нажмите кнопку «Предоставить согласие» на шаге 6. Я вижу, что вы используете разрешения для приложений, я не думаю, что потоку паролей это нужно, скорее всего, нужны делегированные разрешения. Чтобы использовать разрешения приложения, вам необходимо переключиться на поток учетных данных клиента (идентификатор приложения и секрет приложения). Это полностью поддерживается в ADAL. - person evilSnobu   schedule 25.05.2018