Azure AD удаляет разрешения для зарегистрированного приложения - PullRequest
0 голосов
/ 17 мая 2018

Я использую Azure AD, чтобы обеспечить безопасность своих вызовов для обслуживания.(У каждой службы есть удостоверение приложения в Azure AD).

Пример: Application A хочет получить доступ Application B.

Я заметил, что при запросе токена доступа у Application A с использованием Client CredentialПоток (с сертификатом), токен доступа выдается без необходимости явной установки разрешений на доступ Application B.

Это кажется мне странным, потому что возвращенный токен имеет свою аудиторию равной Application B, даже если я не предоставил ему явный доступ.

ЕслиЯ правильно понимаю, что все зарегистрированные приложения по умолчанию имеют доступ друг к другу?

Есть ли способ в Azure AD явно требовать установки разрешений для доступа приложения друг к другу?

Ниже приведен скриншот Application A необходимых разрешений.Как видите, Application B здесь не указан.

enter image description here

На следующем снимке экрана я присвоил TodoListService (он же Приложение B)требуемые разрешения Application A

enter image description here

1 Ответ

0 голосов
/ 17 мая 2018

Я заметил, что при запросе токена доступа из Приложения A с использованием потока учетных данных клиента (с сертификатом) выдается токен доступа без необходимости явной установки разрешений для доступа к Приложению B.

Да, это может быть немного удивительно, и я не уверен, почему это так.

Что вам нужно сделать, это определить разрешения приложения для API, а затем назначить его на клиенте.Затем необходимо проверить, имеет ли вызывающий объект необходимые разрешения приложения в токене.

У меня есть статья на эту тему: Определение областей разрешений и ролей, предлагаемых приложением в Azure AD .

Чтобы определить разрешение приложения для API, вам нужно отредактировать его манифест в Azure AD и добавить роль приложения с типом приложения-члена, например:

{
  "appRoles": [
  {
    "allowedMemberTypes": [
      "Application"
    ],
    "displayName": "Read all todo items",
    "id": "f8d39977-e31e-460b-b92c-9bef51d14f98",
    "isEnabled": true,
    "description": "Allow the application to read all todo items as itself.",
    "value": "Todo.Read.All"
  }
  ]
}

IIRCВы должны сгенерировать GUID для идентификатора.После определения этого разрешения в API перейдите в клиентское приложение и добавьте разрешение приложения в поле «Необходимые разрешения».Затем вы должны нажать Предоставить разрешения для предоставления разрешения приложению.

Теперь, когда клиент получает токен с учетными данными клиента, токен будет содержать:

{
  "roles": [
    "Todo.Read.All"
  ]
}

Так что вам придетсяпроверьте, что это присутствует.

...