Значение аудита Azure Active Directory JWT - PullRequest
0 голосов
/ 04 октября 2018

В JWT от AAD есть ключ 'aud'.https://jwt.io/, говорит, что это «Аудитория.(Для кого или для чего предназначен токен).Мой вопрос: Являются ли aud значения для конкретного сайта - могу ли я проверить aud и ожидать, что он будет таким же, чтобы проверить, предназначен ли токен для моего конкретного сайта?

Ответы [ 2 ]

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

Вы уже получили хорошее объяснение ценности аудитории от juunas.

Я добавляю здесь конкретный пример кода из Azure-Samples на Github, который показывает, как проверять токен JWT вручную и проверяет, среди прочего, значение аудитории.(Также очень важно проверить издателя)

Посмотрите на этот конкретный код и особенно возле комментария " Мы принимаем как URI идентификатора приложения, так и идентификатор приложения этого приложения-службы "

            JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();

            TokenValidationParameters validationParameters = new TokenValidationParameters
            {
                // We accept both the App Id URI and the AppId of this service application
                ValidAudiences = new[] { audience, clientId },

                // Supports both the Azure AD V1 and V2 endpoint
                ValidIssuers = new[] { issuer, $"{issuer}/v2.0" },
                IssuerSigningKeys = signingKeys
            };

Пример кода:

Специальный файл с фрагментом кода, показанным выше

Azure-Samples: Ручная проверка токена доступа JWT в веб-API

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

В Azure AD значение аудитории всегда указывает на ресурс, на который нацелен токен.

Токен доступа можно получить с помощью идентификатора клиента API или URI идентификатора приложения.То, что вы используете, будет аудиторией в токене.Поэтому, если вы создаете API, вы должны проверить, является ли аудитория идентификатором клиента API или URI идентификатора приложения.Вы можете точно знать, что он всегда будет одним из тех, если токен предназначен для вашего API.

РЕДАКТИРОВАТЬ: приведенная ниже информация неверна.Если я знаю идентификатор вашего API + идентификатор вашего арендатора, я могу получить токен доступа для вашего API, используя учетные данные клиента!Маркер не будет содержать области или роли, он не может.Поэтому крайне важно проверить наличие действительных делегированных разрешений (или областей действия) или допустимых разрешений приложений (в утверждении о ролях).

ЭТО НЕПРАВИЛЬНО: Если я попытался получить токен доступа с помощьюидентификатор вашего API от моего клиента AAD, он не даст мне токен.Любое приложение, которое передает токен доступа с правильной аудиторией, имело права вызывать ваш API, когда оно получило токен.

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