Как показали многие примеры, у меня есть две регистрации приложений AAD, одна для моего интерфейса на основе javascript, а другая для моих веб-API только для JSON.
Если я полностью доверяю своему клиентскому приложению AAD, почемутребует ли AAD от меня создания второго приложения AAD для моих веб-API?
Например, если я добавляю определенные роли в мое клиентское приложение AAD, если клиент входит в систему с помощью AAD и получает токен id и токен доступа, содержащиймои роли, это только нужно отправить токен доступа к моим API. API нужно только взломать JWT, проверить аудиторию, издателя, арендатора, разрешения ролей и подпись. В этом мире не требуется секрет клиента в веб-API, регистрация второго приложения AAD не требуется, и, тем не менее, нет вызова AAD из моих API. К сожалению, без двух приложений AAD я не могу найти способ, позволяющий AAD включать роли в мой токен доступа.
Если я не полностью доверяю эмитенту в мошенничестве с заявками, я понимаю, зачем мне это нужнодва приложения AAD и секрет клиента. Но так как я доверяю своему AAD-приложению и подписи JWT, зачем такая сложность? Или, может быть, есть способ сделать это, которого я не нашел?
Спасибо!
Отвечая здесь Марку, потому что просто недостаточно символов в поле комментариев - Пример , на который вы ссылались, является отличным примером, в частности, JavaScript, вызывающим Web API . Это то, что я делаю сейчас на самом деле. Однако проблема заключается в том, что веб-API в образце открыт для всех, кто прошел аутентификацию на клиенте. Мне нужно защитить Web API для определенных лиц в арендаторе, и просто проверить идентификатор клиента / приложения недостаточно, поскольку любой, кто может создать приложение AAD, может подделать его .
Поэтому мне нужно добавить роли к токену доступа, чтобы я знал, что мое приложение аутентифицировало пользователя, и этому пользователю были предоставлены необходимые роли. Например, вот пример Microsoft . И даже здесь видео Microsoft, проходящее через процесс.
Если у меня нет двух приложений AAD с секретом клиента, утверждения о ролях никогда не предоставляются в маркере доступа. Он всегда указывается в токене id, но не в токене доступа.
Я чувствую, что здесь упускаю что-то очевидное. Если бы AAD просто поместил запрошенные мной роли в JWT, когда я аутентифицировался на нем, и я проверил его подпись, аудиторию, издателя и роли, мне бы не понадобилась какая-либо дополнительная сложность?