OAuth2 On-Behalf-Of - как пользователь принимает права доступа среднего уровня?
Я проверяю OAuth2, в On-Behalf-Flow есть одна вещь, которую я не понимаю. Поток выглядит так: У нас есть:
- Приложение 1 (интерфейс)
- App2 (веб-API)
- App3 (ресурс данных (другой веб-API))
Допустим, они настроены так:
- App1 - не предоставляет никаких API; требуется разрешение на использование "App2Permission"
- App2 - выставляет "App2Permission"; требуется разрешение на использование "App3Permission"
- App3 - выставляет "App3Permisson"; не нужно никаких разрешений
Теперь, когда пользователь заходит в App1, он перенаправляет его на страницу входа в AAD - пользователь принимает "App2Permisions", что требуется для App1. После этого App1 получает токен доступа для App2. App1 отправляет запрос в App2 (включая токен доступа, который я только что упомянул). App2 получает этот запрос и должен получить доступ к App3, чтобы получить фактические данные. Тем не менее, он требует "App3Permission" - как это получить? App2 не является интерактивным приложением, которое может показать пользователю экран входа в систему.
1 ответ
Согласно документу, в потоке OAuth 2.0 On-Behalf-Of служба среднего уровня не взаимодействует с пользователем, чтобы получить согласие пользователя на доступ к нисходящему API(в вашем случае App3).
Таким образом, опция предоставления доступа к нисходящему API представляется заранее как часть шага согласия во время аутентификации.
Чтобы узнать, как настроить это для своего приложения, см. Получение согласия для приложения среднего уровня.