ADFS身份验证+ SPA的Cookie过期

时间:2020-07-17 06:24:01

标签: asp.net single-page-application adfs cookie-authentication

在我们的项目中,有一个C#ASP.NET后端和一个单页Web应用程序。 我们刚刚部署了具有ADFS身份验证的应用程序,并且用户注意到,一段时间后,他们必须重新加载我们的应用程序才能使用它(经过我的测试,我得出的结论是,这需要1个小时的时间)。 (用户无需再次输入凭据)。

我注意到,当发生这种情况时,所有ajax请求都会以某种方式失败-生成ajax请求,服务器将请求重定向到ADFS服务器进行身份验证,它会失败,并且不会将其重定向回原始端点请求。

在开发者工具中看起来像这样

https://<FEDERATION SERVER>?wtrealm=<APP_REALM>&wctx=WsFedOwinState%3Dmu0Ic7SbHueJsXe4JU9boNFrew3OeM1F9NUP8HEXcG562zuad0UWj8SaJ1uFkn0WWm10Xm1SHph6Z_bnOQC8-ZpH_EyLgxzMJPGVaeK8-BwglW5gvJerWfJHQk36H6rV4wdIPWOqr2fOv7OnErt7gEpnlzRmxTVibqVQ3XQ3O8stggteue_L5zpUr88ks27oJ7XNtZM2eabQ2065nYUutQ&wa=wsignin1.0

如果我们不使用SPA,则当用户在站点中导航时,cookie将在每个站点上更新/刷新,这不会成为问题。

我应该怎么做才能解决此问题?一个会话增加的时间可以由ADFS服务器来解决,但是我认为这只是暂时的解决办法,并且会在不同的时间再次出现。

如何保持Cookie的新鲜度?

用于ADFS的ASP.NET身份验证代码非常简单: app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseWsFederationAuthentication(
            new WsFederationAuthenticationOptions
            {
                Wtrealm = realm,
                MetadataAddress = adfsMetadata,
                AuthenticationMode = AuthenticationMode.Passive
            });

0 个答案:

没有答案