Вызов моего собственного API, защищенного AzureAD V2, от другого арендатора - PullRequest
1 голос
/ 13 июня 2019

У меня есть DotNet Core WebAPI, который живет в моем собственном клиенте Azure AD. Этот WebAPI защищен с помощью аутентификации AzureAD V2 (!) BearerToken. Этот API вызывается Angular SPA, аутентифицированным через OIDC (AzureAD v2) с использованием @azure/msal-angular в соответствии с руководством по https://docs.microsoft.com/en-us/graph/tutorials/angular. Все отлично работает с пользователями из моего собственного арендатора. Но при входе в систему с пользователем другого арендатора я получаю следующую ошибку:

"AADSTS650052: The app needs access to a service
(\\\"https://mytenant.de/AngularDemoApi2\\\") that your organization
\\\"myorganization.de\\\" has not subscribed to or enabled. Contact your 
IT Admin to review the configuration of your service 
subscriptions.\r\nTrace ID: 9597578e-7e48-49b2-85be--b5a1ee14300\r\n
Correlation ID: 30d4caf2-e3ca-4d7d-84b5-564d428e4e69\r\n
Timestamp: 2019-06-13 15:40:46Z|invalid_client"

Я пытался следовать некоторым примерам, чтобы сделать WebApplication и WebAPI мультитенантным, но все примеры устарели и / или не имеют отношения к V2 Azure AD. WebApplication и WebAPI установили

"signInAudience": "AzureADandPersonalMicrosoftAccount"

в Манифесте. В WebAPI есть приложение Uri в виде

https://mytenant.de/AngularDemoApi2"

Полагаю, мне нужно как-то дать пользователям от других арендаторов разрешение на доступ к WebAPI в моем клиенте, но я не знаю, как.

Редактировать: Когда я выбираю выставить API напрямую из приложения регистрации SPA, это работает как шарм. Но этот подход не кажется правильным, потому что каждый представленный API будет иметь одну и ту же аудиторию (утверждение «aud», та же аудитория, что и приложение SPA). В моем примере выше у меня есть отдельная регистрация приложения - одна для SPA и одна для API. Таким образом, у каждого API будет своя собственная аудитория, и это также будет упомянуто на экране согласия.

Может быть, кто-то может объяснить, как правильно его настроить?

...