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",
};
Другие вопросы по тегам