Как области добавляются к токену в Azure Entra ID?

Я работаю над проектом, в котором пытаюсь создать токен, используя поток кода авторизации в Azure Entra ID. Я создал собственные области и пытаюсь включить эти области в токен. При запуске авторизации я включаю необходимые области, используя параметр запроса областей. Каждый раз, когда я добавляю новые области, появляется экран согласия. Я даю согласие пользователя на запрошенные области. Я заметил, что Azure Entra ID включает в токен уже согласованные пользователем области, даже если я не запрашивал их при инициации авторизации.

Например,

  1. Генерация токенов впервые Я включил 3 области, а именно: «Пациент», «Практикующий врач» и «Наблюдение». После успешной аутентификации и авторизации внутри утверждения scp генерируется токен с тремя областями действия.

  2. Генерация токенов во второй раз Я включил 3 области, а именно «Пациент», «Наблюдение» и «Состояние». После успешной аутентификации и авторизации генерируется токен с 4 областями внутри утверждения scp.

Несмотря на запрос 3 прицелов, я получил 4 прицела. Дополнительная область — это область «Практик», с которой я согласился при первом создании токена.

Я гуглил об этом поведении Azure Entra ID для управления областями, но не нашел никакой соответствующей информации.

Может ли кто-нибудь прояснить вышеописанное поведение, а также мое наблюдение о добавлении согласованных областей внутри токена, даже если они не запрошены. Если мое наблюдение верно, можете ли вы указать ссылки или документы, которые могут обосновать то же самое. Любая помощь будет для меня большой помощью.

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
874
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Azure Entra ID включает в себя все области, ранее предоставленные приложению в маркере доступа, а не только области в текущем запросе. Вот почему вы видите ранее согласованные области в токене, даже если они не были запрошены в текущем запросе. Такое поведение разработано специально и предназначено для уменьшения количества запросов на согласие пользователей.

Когда пользователь или администратор соглашается на набор разрешений для приложения, эти разрешения предоставляются приложению в контексте этого пользователя. Если приложение позже запросит подмножество этих разрешений, выданный токен по-прежнему будет включать все разрешения, предоставленные приложению для этого пользователя. Это означает, что если вы изначально дали согласие на три области, а затем запросили только две области в последующем запросе токена, токен все равно может содержать все три области, поскольку согласие на третью область остается действительным.

Такое поведение связано с концепцией статического (.default) и динамического согласия на платформе идентификации Microsoft. Когда .default используется в запросе области, он, по сути, запрашивает «все статические разрешения, предоставленные этому приложению». Если явное согласие уже было предоставлено для набора областей, запрос токена с .default приведет к созданию токена, содержащего все эти области.

Чтобы избежать запроса ненужных областей, рекомендуется запрашивать только те области, которые необходимы для текущей операции. Вы можете постепенно запрашивать дополнительные области по мере того, как приложение выполняет операции, требующие этих областей.

Использованная литература:

Другие вопросы по теме