как вызвать веб-API службы приложений, защищенных AAD, используя MSI из другой службы приложений - PullRequest
0 голосов
/ 21 февраля 2019

у нас есть базовый веб-API Asp.net, развернутый как служба приложений Azure.Мы включили MSI в этом веб-API службы приложений, чтобы легко получать секреты Keyvalut.

Теперь у нас есть другая служба приложений, которая будет вызывать веб-API выше, и мы включим аутентификацию AAD в веб-API.

Я знаю, что мы можем зарегистрировать приложение AAD, чтобы позволить второй службе приложений получать доступ к веб-API, но мне интересно, можем ли мы включить MSI во второй службе приложений и использовать MSI для получения токена доступа к веб-API?Любой документ, на который я могу сослаться?

1 Ответ

0 голосов
/ 21 февраля 2019

Да, вы можете, и вы можете обратиться к моей статье на эту тему: https://joonasw.net/view/calling-your-apis-with-aad-msi-using-app-permissions.

Вам нужно будет определить разрешения приложения в вашем API, а затем назначить их для участника службы MSI через PowerShell.или один из API-интерфейсов Graph.

Пример разрешения приложения в манифесте приложения API в AAD:

{
  "appRoles": [
    {
      "allowedMemberTypes": [
        "Application"
      ],
      "displayName": "Read all things",
      "id": "32028ccd-3212-4f39-3212-beabd6787d81",
      "isEnabled": true,
      "description": "Allow the application to read all things as itself.",
      "value": "Things.Read.All"
    }
  ]
}

Подробнее о разрешениях см. здесь: https://joonasw.net/view/defining-permissions-and-roles-in-aad.

Вы можетезатем назначьте это субъекту службы через AAD PowerShell:

Connect-AzureAD
New-AzureADServiceAppRoleAssignment -ObjectId 1606ffaf-7293-4c5b-b971-41ae9122bcfb -Id 32028ccd-3212-4f39-3212-beabd6787d81 -PrincipalId 1606ffaf-7293-4c5b-b971-41ae9122bcfb -ResourceId c3ccaf5a-47d6-4f11-9925-45ec0d833dec

ObjectId и PrincipalId - это сгенерированный MSI идентификатор субъекта службы.Идентификатор - это идентификатор роли / разрешения приложения.ResourceId - это идентификатор участника службы API.

После этого вы можете приобрести токены, используя управляемый идентификатор для API, и токен будет содержать разрешение приложения как "roles": "Things.Read.All".

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