[MVC5]ADFS使用WsFederation中Cookie一小时延长问题

工作中遇到的情境,我们使用ADFS做认证,
实作方式是透过Microsoft.Owin.Security.WsFederation(ADFS端也设定了WsFederation),
同网路上众多教学一样,添加完下列内容,基本上就没太大问题

            MetadataAddress = EpmsSettings.Default.AdfsMetadataAddress,            Wtrealm = EpmsSettings.Default.AdfsWtrealm,

但最近遇到一个状况是,.AspNet.Federation此Cookie每一小时就会到期需要重新取得进行更新,
这边也确认过Cookie内容,其实到期时间是随着浏览时间结束才结束,
所以推测一小时此时间是AdfsMetadataAddress或adfs其中一项预设设定。

上网寻求万能google大神后亦有相同问题进行询问
https://social.msdn.microsoft.com/Forums/vstudio/en-US/0091bcb2-c86d-4d36-a845-102ac24c4e93/default-token-lifetime-for-relying-party-trusts?forum=Geneva

初步找到方向进行修改,先尝试过调整CookieAuthenticationOptions

new CookieAuthenticationOptions{      AuthenticationType = WsFederationAuthenticationDefaults.AuthenticationType,      Provider = new CookieAuthenticationProvider      {            OnResponseSignIn = context =>            {                   context.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddHours(12);                   context.Properties.IsPersistent = true;            }      }});

经过验证发现并没有生效,Cookie仍是一小时之后会到期并替换
后来发现必须在WsFederationAuthenticationOptions加入UseTokenLifetime设定

WsFederationAuthenticationOptions

      new WsFederationAuthenticationOptions      {             MetadataAddress = EpmsSettings.Default.AdfsMetadataAddress,             Wtrealm = EpmsSettings.Default.AdfsWtrealm,             UseTokenLifetime = false,             ...

即可以顺利延长Cookie时间,避免Ajax时会有因Cookie到期而错误的状况出现

以上笔记


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章