Как мне настроить MSAL в Angular? - PullRequest
0 голосов
/ 12 октября 2018

Я бы аутентифицировался в Azure, используя Azure AD library для Angular.

Вот мой msalModule

MsalModule.forRoot({
  clientID: "ClientTenantID",
  authority: "https://login.microsoftonline.com/common",
  redirectUri: "http://localhost:4200/",
  consentScopes: [ "user.read", "ClientID/access_as_user"],
  popUp: true,
  unprotectedResources: ["https://www.microsoft.com/en-us/"],
  protectedResourceMap: protectedResourceMap,
  logger: loggerCallback,
  correlationId: '1234',
  level: LogLevel.Info,
  piiLoggingEnabled: true
})

Когда я получу всплывающий знак входа, введите мойID пользователя + PW Я получаю эту ошибку

AADSTS50000: There was an error issuing a token.

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

В моем примере я нашелClientTenantID на портале Azure -> Azure Active Directory -> свойства

enter image description here

Тогда идентификатор ClientId, используемый в области согласия, находится на портале Azure -> Azure Active Directory -> регистрация приложения, затем идентификатор приложения.

Они являются правильными идентификаторами для использования в MSAL?

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Для MSAL 'consentScopes' должна быть задана желаемая область для внутреннего API, на которую ориентирован ваш клиентский интерфейс;API, для которого ему нужен токен доступа.

Итак, на фотографиях ниже мой угловой веб-клиент называется «MyCompany-Web-dev», а мой API - «MyCompany-API-Dev».

Чтобы найти точную строку, которая должнавведите:

  1. Перейдите в список зарегистрированных приложений Azure B2C.Обычно есть как минимум два, интерфейсный угловой веб-клиент и серверный API.

  2. Нажмите на название приложения вашего API (не вашего веб-клиента).

  3. Нажмите «Опубликованные области».enter image description here

  4. Значение в поле «Full Scope Value» также является значением для «LicenseScopes» MSAL.enter image description here

  5. Так вот, как настроить MSALModule.forRoot ({...}).
    Аналогично, если вы используетеМетод MSALService.loginPopup будет выглядеть следующим образом:

    MyMsalService.loginPopup (["openid", "offline_access", "https://mycompany.onmicrosoft.com/api-dev/user_impersonation"])

Надеюсь, это поможет.

0 голосов
/ 12 октября 2018

Являются ли они правильными идентификаторами для использования в MSAL?

Короче говоря, Нет, clientID должно быть Application ID вашего AD ADP, которое вы использовали в согласииscope.

В consentScopes это должны быть нужные области действия, на которые пользователь должен дать согласие.MSAL позволяет приложениям Angular (от 4,3 до 5) проверять подлинность корпоративных пользователей и получать доступ к Microsoft Cloud или Microsoft Graph.Например, в упомянутой вами ссылке consentScopes: ["user.read", "api://a88bb933-319c-41b5-9f04-eff36d985612/access_as_user"] это означает, что пользователь авторизует рекламное приложение для доступа к API, также это может быть https://graph.microsoft.com и т. Д.

В вашей статье это былоясно объяснил,

acceptScopes : Позволяет клиенту указывать желаемые области, которые должны быть согласованы.Области могут быть из нескольких ресурсов / конечных точек.Передавая здесь область действия, вы только согласитесь, и токен доступа не будет получен до тех пор, пока клиент фактически не вызовет API.Это необязательно, если вы используете MSAL только для входа (Аутентификация).

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