Учетные данные клиента MSAL с AAD B2C - PullRequest
1 голос
/ 16 марта 2020

Я хочу разрешить пользователям защищенного приложения B2 C просматривать, прежде чем принять решение о регистрации

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

Мне удалось найти только примеры, связанные с Graph API, который является недопустимым токеном для API, защищенного в моем AAD

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

Редактировать: это то, что я сейчас передаю, чтобы попытаться получить токен, который я могу использовать

    public static string tenantID = "aadtenant.onmicrosoft.com";
    public static string ClientID = "xxxx-a2e2-40f5-958b-dc39ca2bd413";
    public static string Secret = "zzzzzzzzs_JhPY1HSFEREgRy5Z2rcL";
    public static string redirectURI = "https://mysite.azurewebsites.net/api";
    public static string[] scopes = new string[] { "api://xxxxxx-a2e2-40f5-958b-dc39ca2bd413/.default" };
    public static string url = String.Format("https://login.microsoftonline.com/{0}/oauth2/v2.0/token", tenantID);

Однако это возвращает ошибку

Exception AADSTS50059: No tenant-identifying information found in either the request or implied by any provided credentials.

Единственное, что я заметил, это то, что при настройке доступа к API в моем приложении-арендаторе AAD только График назначен. Когда я go к моим API, я ничего не вижу. Поэтому я не уверен, как именно приложение AAD и приложение B2 C связаны друг с другом

Еще одно изменение: теперь я предоставил разрешение от приложения AAD приложению B2 C и создал область действия, но я все еще получаю сообщение об ошибке, на этот раз область действия недействительна

1 Ответ

0 голосов
/ 16 марта 2020

В последний раз, когда я реализовывал аутентификацию учетных данных клиента в API, где использовался B2 C, мне пришлось добавить в API вторую схему аутентификации. Я зарегистрировал приложение в базовом Azure AD арендатора B2 C, зарегистрировал там разрешение приложения (appRole), а затем его можно назначить клиентским приложениям (которые также необходимо зарегистрировать в базовом арендаторе AAD). .

Затем API должен иметь возможность проверять как токены доступа, приходящие с областями из регистрации B2 C, так и с разрешениями (ролями) приложения из регистрации AAD. Эмитенты и др. c. различаются по этим токенам.

Честно говоря, это немного больно, но это, по сути, то, что рекомендуют документы: https://docs.microsoft.com/en-us/azure/active-directory-b2c/application-types#daemonsserver приложения со стороны .

Хотя поток учетных данных клиента в настоящее время не поддерживается Azure AD B2 C, вы можете настроить поток учетных данных клиента, используя Azure AD. Арендатор Azure AD B2 C разделяет некоторые функциональные возможности с Azure AD корпоративными арендаторами. Поток учетных данных клиента поддерживается с помощью функции Azure AD клиента Azure AD B2 C.

После того, как вы выполните все эти настройки, ваш клиент должен будет использовать клиент регистрации AAD id + secret, с областью действия, установленной на api-client-id/.default.

...