Okta MVC Cookie Authentication - когда он истекает? - PullRequest
0 голосов
/ 31 октября 2019

Я следовал документам Okta для проверки подлинности Owin OpenId с использованием файлов cookie в приложении MVC (.Net Framework).

Чтобы помочь мне проверить некоторую логику вокруг вопроса «что происходит, когда истекает сеанс пользователя», я установил срок действия cookie на 30 секунд и установил SlidingExpiration = false - например, так:

                app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                LoginPath = new PathString("/v2/account/Login"),
                ExpireTimeSpan = TimeSpan.FromSeconds(30), 
                SlidingExpiration = false
            });

            app.UseOktaMvc(new OktaMvcOptions()
            {
                OktaDomain = ConfigurationManager.AppSettings["okta:OktaDomain"],
                ClientId = ConfigurationManager.AppSettings["okta:ClientId"],
                ClientSecret = ConfigurationManager.AppSettings["okta:ClientSecret"],
                RedirectUri = ConfigurationManager.AppSettings["okta:RedirectUri"],
                PostLogoutRedirectUri = ConfigurationManager.AppSettings["okta:PostLogoutRedirectUri"],

                Scope = new List<string> { "openid", "profile", "email" },
            });

... код отлично работает для входа в систему и аутентификации, а также для входа в okta, и все - так просто! К сожалению, пользователь не вышел из системы через 30 секунд.

Если я смотрю запрос после входа в систему и проверяю Identity.Claims, я вижу истечение срока действия (тип заявки "exp" ). Заявка действительно установлена ​​на дату / время. 30 секунд с момента регистрации.

Проблема в том, что пользователь остается аутентифицированным. Я могу продолжать делать запросы до тех пор, пока не истечет это время. Я не вижу истечения срока действия изменения претензии и вижу аутентифицированного пользователя в удостоверении личности. Я не уверен, сколько бездействия, пока этого пользователя не попросят войти снова. (помните, что для параметра slide задано значение false, и фоновые вызовы ajax не выполняются).

Мне также пришло в голову, что промежуточное ПО Okta может увидеть истечение срока действия заявки, а затем использовать оригинальный токен, напримеробновление, и если пользователь все еще вошел в okta, то оставьте пользователя вошедшим в мое приложение (что было бы действительно здорово!) - но, наблюдая за работой моей dev-машины с fiddler, я не вижу никаких вызовов oktaБыть сделанным.

Может кто-нибудь объяснить, почему это произойдет и когда истечет срок действия претензии?

...