2017-02-13 13 views
2

Я использую adal.js для своего сайта для аутентификации AAD. После декодирования токена AAD, aud выглядит по-другому, это приложение api в AAD. Однако, когда я пытаюсь понять, как работает AAD в разных сценариях, почти весь пример документации к токену AAD показывает aud в качестве URL-адреса ресурса, например http://contoso.com/.Aken token: Почему aud иногда показывает идентификатор приложения, иногда это URL-адрес приложения?

Основываясь на моем понимании, aud означает, что этот токен выдается для. Нет никаких ограничений на то, что должно быть на самом деле.

Но мне любопытно, в чем главная причина этого непоследовательного поведения aud от AAD.

Почему иногда это может быть идентификатор приложения и иногда быть URL-адресом? Почему бы не использовать приложение id все время или URL-адрес все время?

Не могли бы вы поделиться своими мыслями?

Спасибо.

ответ

1

ADAL.JS имеет дело с двумя типами токенов: id_token и access_token. id_token представляет собой идентификатор пользователя, который выполнил вход в ваше приложение. Очень грубо он содержит всего 2 штуки - идентификатор пользователя, который предоставил учетные данные и идентификатор приложения, которое приобрело токен. В случае id_token значение aud является Guid и соответствует AppId приложения, приобретенному токеном. С точки зрения OAUTH v2 это то же приложение, которое содержит ресурсы, к которым пользователь хочет получить доступ.

Говоря о access_token - он представляет собой не только упомянутые выше 2, пользователь и приобретающее приложение, но также приложение с набором ресурсов, к которому предназначен доступ пользователя. Это второе приложение, представленное аудиторским заявлением, в большинстве случаев будет Uri, который представляет собой имя участника услуги (или идентификатор приложения Uri или IdentifierUri) - все это синонимы. Это значение - это способ указывать из приложения AAD клиента в приложение AAD сервера, которое содержит защищенные ресурсы.

Итак, ADAL.JS сначала запрашивает учетные данные пользователя и приобретает id_token, а затем отправляет дополнительный запрос в конечную точку AAD, чтобы получить access_token. Если вы посмотрите на оба этих токена, вы увидите различную ценность в заявлении аудита, как описано выше.

Возможно также иметь Guid в заявлении aud для access_tokens - что Guid будет соответствовать AppId приложения ресурса, поэтому, если у вас есть код, который анализирует значение, он должен быть готов к обработке не только Урис, но и Гиды.

2

Значение «AUD» в токене должно соответствовать любому значению «Ресурс» в запросе на токен. Если вы запрашиваете токен, указав ресурс как идентификатор приложения, вы получите значение AUD с идентификатором GUID. В противном случае, если вы используете URI идентификатора приложения, вы получите URL-адрес обратно.

Как разработчик ресурсов, важно, чтобы вы программировали свой API так, чтобы вы принимали обе формы токенов, так как оба они должны быть действительными для доступа к вашему ресурсу. Я считаю, что OWIN уже заботится об этом для вас.

Дайте мне знать, если это поможет!

+1

Спасибо! Когда я обновляю конфигурацию adal.js для изменения ресурса в качестве своего идентификатора приложения, я получил ошибку AAD AADSTS90009 (см. Это сообщение для деталей: http://stackoverflow.com/questions/42006468/oauth-2-0-and- azure-active-directory-error-aadsts90009) Я предполагаю, что для веб-сайта я могу передать только идентификатор приложения.Тогда это бэкэнд должен проверить как ... –

 Смежные вопросы

  • Нет связанных вопросов^_^