Identity Server 4, расширяющий сеанс аутентификации - PullRequest
0 голосов
/ 30 августа 2018

Я боролся с этим уже несколько недель, и просто не могу найти ответ.

Я установил Identity Server 4 в качестве посредника для Okta в качестве поставщика идентификаторов для пары приложений Angular. Это работает чертовски хорошо для этой цели. Кроме того, что бы я ни пытался изменить, через 30 минут беззвучный обновляет отчет «Требуется вход в систему». И поиск в Google, как я мог бы, я просто не могу понять, как сохранить этот сеанс в живых. Или я, возможно, слепой, и мне это не хватает. Это кажется простым делом - продлить сеанс - но где-то я нахожусь на контрольно-пропускном пункте и не могу этого сделать.

Мои настройки:

services.AddAuthentication(options =>
{
    options.DefaultSignInScheme = "oidc";
})
.AddOpenIdConnect("oidc", "OpenID Connect", options =>
{
    options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
    options.SignOutScheme = IdentityServerConstants.SignoutScheme;
    options.GetClaimsFromUserInfoEndpoint = true;
    options.UseTokenLifetime = true;

    options.Authority = Configuration["Authority"];
    options.ClientId = Configuration["OktaAppId"];
    options.SaveTokens = true;

    options.TokenValidationParameters = new TokenValidationParameters
    {
        NameClaimType = "name",
        RoleClaimType = "role", SaveSigninToken = true
    };
});

Этот вопрос SO кажется связанным, но он с 2017 года и не имеет видимого разрешения: Время ожидания сеанса при использовании IdentityServer4 и клиента Oidc, из-за которого Silent Renew перестает работать

Мой код обновления без вывода сообщений работает - я получаю новые токены с каждым вызовом. Но через 30 минут вызов конечной точки авторизации завершает работу файла cookie idsrv.session, который, по-видимому, является файлом cookie сеанса авторизации. Решения, которые я нашел для расширения сеансов, связаны с именами входа, которые не используют OIDC, и, таким образом, кажется, что расширения сеансов не применимы к моей ситуации (по крайней мере, свойства, которые необходимо изменить, не существуют в объект параметров OIDC).

Еще одна любопытная и, возможно, важная деталь ... Похоже, что при достижении конечной точки авторизации с параметром prompt = none для обновления без вывода сообщений перенаправление в Okta отсутствует. Я не уверен, что это важно, или ID4 должен напрямую связываться с OKta для проверки своего сеанса.

Во всяком случае, я нахожусь в тупике. Я обычно не отправляю вопросы в SO, потому что я, кажется, довольно ужасно пишу качественные вопросы. Хотелось бы надеяться, что этим я удовлетворял потребности сообщества.

...