OIDC Неявный поток - длина URI перенаправления
Я использую OIDC с неявным потоком кода с типом ответа "id_token token". Все отлично работает, но заметил, что URL обратного вызова с токеном доступа, id_token, scope и session_state + доменное имя уже содержит 2033 символа. Проект, над которым я работаю, должен поддерживать IE 10, и, насколько я знаю, ограничение по URL составляет 2048 символов. Я немного боюсь, что длина URL обратного вызова опасно достигает этого предела. Какой предлагаемый подход в таких случаях? Могу ли я изменить тип ответа на "токен", а затем запросить информацию о пользователе у конечной точки информации о пользователе? Или, может быть, я должен сделать что-то, чтобы уменьшить размер URL обратного вызова, попытаться уменьшить информацию в access_token и id_token? Третий вариант, похоже, является эталонным токеном, но я немного боюсь накладных расходов с одним дополнительным звонком в STS.
В проекте я использую oidc-client-js и IdentityServer4.
Спасибо
2 ответа
Постарайтесь, чтобы токен был как можно меньше. IOW меньше претензий.
IdentityServer по умолчанию удаляет все дополнительные утверждения из токена идентификации в тех случаях, когда токен доступа доступен (если вы не переопределите это поведение).
Ссылочные токены - это еще один способ справиться с этим, как вы сказали. Включив кэширование в промежуточном программном обеспечении API, вы можете уменьшить накладные расходы.
IE это чума.
Подобная проблема здесь, но с приложением Electron. Приложение Electron должно вызывать защищенный API. API должен знать личность вызывающего пользователя. Я попытался изменить тип ответа с "id_token token" на "token", но теперь попытка аутентификации IdentityServer приводит к следующему:
UI:
Извините, произошла ошибка: invalid_scope
Отладочный вывод:
Запросы только для типа ответа токена должны включать области ресурсов, но не области идентификаторов.
Конфигурация Javascript (заимствована из примера клиента Javascript от Dom):
var config = {
authority: "http://localhost:5000",
client_id: "js",
redirect_uri: "http://localhost:5003/callback.html",
response_type: "token",
scope:"openid profile TestApi",
post_logout_redirect_uri : "http://localhost:5003/index.html",
};