Я написал статью в блоге на эту тему c: https://joonasw.net/view/calling-your-apis-with-aad-msi-using-app-permissions.
Вы определенно можете это сделать, это будет означать, что вам не нужно использовать любые секреты вызова Сервиса B из Сервиса A:)
Вам необходимо будет назначить разрешения приложения для субъекта управляемой службы идентификации с помощью PowerShell / Graph API. Там нет интерфейса для этого. Пример команды PowerShell:
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.
При этом используется модуль AzureAD PowerShell.
После того, как разрешение назначено, ваша управляемая идентификация должна иметь возможность получить токен. для службы B.
В вашей локальной среде разработки потребуется другой подход, поскольку там нет управляемой идентификации. Например, вы можете использовать секретный ключ клиента для проверки вызовов в службу B.