Запрос PATCH на https://graph.microsoft.com/beta/applications возвращает 403 - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь программно добавить роли приложения к моей регистрации приложения в Azure Active Directory. В качестве справки я использую следующую статью Microsoft: https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/application_update

Вот мой код:

string bearer = "Bearer <token>";
string appId = "<guid>";
string appEndPoint = "https://graph.microsoft.com/beta/applications/{0}";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Format(appEndPoint, appId));
request.Headers.Add("Authorization", bearer);
request.Method = "PATCH";
request.ContentType = "application/json";

string jsonBody = "{\"appRoles\":[{\"allowedMemberTypes\":[\"User\"],\"description\":\"This is a test role\",\"displayName\":\"Test Role\",\"id\":\"fb3d0a97-b19e-4132-bb62-4a0213b37178\",\"isEnabled\":true,\"origin\":\"Application\",\"value\":\"Test\"}]}";

request.ContentLength = Encoding.ASCII.GetBytes(jsonBody).Length;
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
    streamWriter.Write(jsonBody);
    streamWriter.Flush();
    streamWriter.Close();
}
var responce = request.GetResponse(); // throws 403 Forbidden
var responseStr = new StreamReader(responce.GetResponseStream()).ReadToEnd();

Вот как я получаю токен на предъявителя:

string domain = "my.domain.com";
string appId = "<guid>";
string clientSecret = "<secret>";

AuthenticationContext authContext = new AuthenticationContext(string.Format("https://login.windows.net/{0}/oauth2/token", domain));
ClientCredential creds = new ClientCredential(appId, clientSecret);
AuthenticationResult result = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", creds);

string bearer = result.AccessToken;

Я предоставил моей регистрации приложения все необходимые разрешения, указанные в статье Microsoft, но я продолжаю получать ответ 403.

Я также пытался предоставить моему приложению регистрацию всех доступных разрешений и все равно получаю 403, кто-нибудь знает, что я здесь делаю неправильно?

1 Ответ

0 голосов
/ 07 мая 2018
Ошибка

403 означает, что токен на предъявителя имеет insufficient privileges to complete the operation.

Если мы получим токен на предъявителя с разрешением Делегата, нам нужно (Directory.AccessAsUser.All), мы могли бы проверить его с помощью https://jwt.io/

enter image description here

Я также проверяю ваш код на моей стороне, он работает правильно.

enter image description here

Примечание: На основании моего теста, если токен на предъявителя с делегированием permssion Directory.ReadWrite.All, то у него недостаточно прав

Обновление:

Исходя из моего теста, если я использую разрешение приложения (с AD v1 или v2), я также получаю тот же результат с вами. Вы можете отправить свой отзыв команде Azure.

API в / бета-версии в Microsoft Graph находятся в предварительном просмотре и могут быть изменены . Использование этих API в рабочих приложениях не поддерживается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...