WIF滑动会话重新认证

2024-01-21

我已经在依赖方应用程序中实现了滑动会话,如中所述WIF 4.5 的滑动会话 http://www.cloudidentity.com/blog/2013/05/08/sliding-sessions-for-wif-4-5/。就目前而言,这很有效,但有一个问题似乎没有人谈论。

正如链接的博客文章指出的那样,当 RP 令牌过期时,下次发出请求时,将从 STS 重新颁发令牌。当然,假设 STS 会话生命周期比 RP 会话生命周期长,如果您正在实现滑动会话,则几乎肯定会出现这种情况。

无论如何,这完全违背了滑动会话的全部意义。

似乎没有人讨论 RP 会话过期后该怎么办。我什么want是,如果 RP 会话超时(通常是因为有人离开办公桌 10 分钟),我的应用程序将重定向到 STS 登录页面,用户可以在其中重新进行身份验证,然后重定向回我的页面已请求;或者也许是我提出请求时所在的页面。

我几乎确信这是可能的,但我完全不知道它是如何完成的。

这是我的 global.asax 代码:

    private const int InactivityTimeout = 5; // minutes

    void SessionAuthenticationModule_SessionSecurityTokenReceived
        (object sender, SessionSecurityTokenReceivedEventArgs e)
    {
        var now = DateTime.UtcNow;
        var validFrom = e.SessionToken.ValidFrom;
        var validTo = e.SessionToken.ValidTo;
        double halfSpan = (validTo - validFrom).TotalMinutes/2;
        if (validFrom.AddMinutes(halfSpan) < now && now < validTo)
        {
            // add more time
            var sam = sender as SessionAuthenticationModule;

            e.SessionToken = sam.CreateSessionSecurityToken(
                e.SessionToken.ClaimsPrincipal,
                e.SessionToken.Context,
                now,
                now.AddMinutes(InactivityTimeout),
                e.SessionToken.IsPersistent);
            e.ReissueCookie = true;
        }
        else
        {
            // re-authenticate with STS
        }
    }

我的问题:

  1. Is the else子句放置重新验证逻辑的正确位置?
  2. 如果是这样,请提供一个例子,因为我不知道。
  3. 如果#1 的答案是否定的,那么我是否需要订阅一个单独的事件来告诉我“嘿,您的会话安全令牌已过期!”?

我建议您同步 STS 和 RP 上的会话生命周期。

您可以在STS上将会话生存时间设置为10分钟,在RP上将会话生存时间设置为10分钟,并在RP上使用滑动会话方式。 10 分钟不活动后,两个会话都将过期,并且应要求用户重新进行身份验证。

如果您有多个 RP,您可以实现从 RP 到 STS 的一种保持活动状态 - 例如在 RP 上的每个网页中加载来自 STS 的资源。每当在 RP 上加载页面时,都会从 STS 加载保持活动资源 - 刷新 STS 会话。 10 分钟不活动后,它们都会超时,用户必须重新进行身份验证。

“来自 STS 的资源”可能意味着在不可见的 iframe 中加载的网页(Web 表单/MVC)。重要的是它是一个托管处理程序,因此请求由 ASP.NET 处理。

至于您的问题,如果您同步会话生命周期,以便它们一起超时:

  1. 不,您不需要在 else 子句中添加任何代码。如果令牌过期,WIF 将重定向到 STS。
  2. 只需删除 else 子句即可。
  3. 让 WIF 为您处理这件事。

为了完整起见,如果您无法同步会话生命周期,则可以在 RP 会话过期时触发联合注销。以下代码片段会在配置的发行者 (STS) 处触发注销。您可以将其放在 else 子句中,以在 RP 会话过期后触发第一个请求的注销:

using System.IdentityModel.Services; //WIF 4.5

var stsAddress = new Uri(FederatedAuthentication.FederationConfiguration.WsFederationConfiguration.Issuer);
WSFederationAuthenticationModule.FederatedSignOut(stsAddress, null); //Optional replyUrl set to null

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WIF滑动会话重新认证 的相关文章

  • Android 设备上的 Facebook 分享问题

    我使用了来自的样本AndroidFacebook示例 https github com ddewaele AndroidFacebookSample它在模拟器上运行良好 但在设备上它被转移到内置的 Facebook 意图 设备上不会出现身份
  • PHP登录然后重定向

    我使用以下代码将用户登录到一系列安全页面 我需要将每个用户在提交后重定向到适当的页面 我想知道需要采取哪些步骤来选出三个登录级别 管理员 特殊 用户 if isset SESSION username function check logi
  • Next.JS 中止获取路由组件:“/login”

    我正在开发一个用于每页身份验证的 useUser Hook 我已经正常实现了 useUser 挂钩 因此重定向工作正常 但我收到上述错误 中止获取路由组件 login 我该如何修复 useUserHook 来解 决它 useUser tsx
  • 如何将身份验证详细信息传递给 iframe 内的应用程序?

    我有一个网页 想在其中显示詹金斯的网页 因此使用iframe like But http xxx xxx xx xx 8080 view Nightly 20Builds 20 打开登录页面 因此无法直接显示内容 其实我想在没有登录的情况下
  • WIF、STS 和会员表

    我目前正在考虑将 WIF 用于即将进行的项目 并且希望获得一些帮助查找信息 我环顾四周 并没有明确的答案 我当前有一个依靠 ASP 会员资格运行的站点 并且这些表中有大量用户 是否有任何值得信赖的自定义 STS 使用会员资格 桌子 我当前使
  • 下一个验证 |当用户对象有太多项目时,会话请求没有数据

    我会尽力为我解释我的问题 我使用 Strapi 作为后端 使用 Nextjs 作为前端 对于身份验证 我使用 NextAuth nextauth js const options providers Providers Credential
  • 身份验证后如何退出 Google

    所以我的应用程序可以选择使用 Google 登录 单击 Google 提供的按钮后 将打开一个 Web 视图并让用户输入其凭据 允许应用程序访问其信息后 应用程序将用户登录并将 SignInViewController 更改为 TabBar
  • 带 Expect 的 Telnet 自动化:身份验证速度慢?

    我正在使用 Telnet 向 Mikrotik 路由器发送命令 telnet 192 168 100 100 l admin Password pass1234 admin ZYMMA gt interface pppoe server r
  • Django:登录用户并在同一页面上刷新而不定义模板?

    我正在尝试使用引导下拉登录表单来让用户登录 我可以对我的用户名和密码进行硬编码并进行身份验证 但我试图在不进入登录屏幕的情况下让用户登录 这是我的代码 模板 我使用操作来调用 logUserIn url 以便表单可以发布到该视图 ul cl
  • Windows 身份验证到底如何工作? web.config 似乎不够

    正在尝试修复 Windows 身份验证 目标 Windows 身份验证 使用 Firefox 时 应出现登录对话框 而使用 Internet Explorer 时 Windows 用户名和密码应自动转到 Web 服务器 我使用空模板建立了一
  • yesod——密码保护临时站点

    我正在尝试设置 yesod 网络服务器的临时实例 我想知道是否有一些简单的方法可以使整个站点受到密码保护 具体来说 我希望能够提示那些导航到我的网站的人提供凭据 经过身份验证后 它应该像典型站点一样运行 但如果他们无法验证自己的身份 他们就
  • “git push heroku master”仍然要求身份验证

    我已经执行了 heroku login 但是当我尝试推送时 仍然要求我进行身份验证 git push heroku master Username for https git heroku com
  • Android Facebook SDK 4.5.0 登录注销问题,尝试再次登录时出现无效密钥哈希错误

    我按照中所述实现了 Facebook 登录按钮https developers facebook com docs facebook login android https developers facebook com docs face
  • 如何使用 LDAP 身份验证使用 gitlab 设置管理员用户?

    我刚刚设置了 gitlab 但我完全迷失了管理员用户 维基百科似乎对这个话题保持沉默 谷歌也没有提供帮助 那么 如何在 LDAP 身份验证上使用 gitlab 设置管理员用户 您还可以通过在 Rails 控制台中执行以下操作来为用户设置管理
  • SmartGIT 不要求 ssh 密钥

    切换到新计算机后 我必须再次安装 Windows 版 SmartGIT 现在尝试克隆我的 fedorahosted org repository 密钥存储在 C User myusername ssh SmartGIT 附带了全新安装 并且
  • 确定用于映射网络驱动器的域和用户名

    使用带有 SP1 的 Windows 7 Enterprise 但我希望得到适用于 Windows XP 2003 2008 Vista 7 的通用答案 从命令提示符处 我执行net use命令将 Z 驱动器映射到另一台计算机上的共享 但我
  • 免费 PHP 登录库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 实施令牌认证

    在我的网页中实施令牌身份验证必须遵循哪些步骤 任何摘要或链接将不胜感激 我想实现类似于 Facebook 或 Google 的功能 首次客户端登录并接收令牌 然后在下一步操作中使用它 我还阅读了有关 OAuth 的内容 但我不想让第三方访问
  • 在 GraphQL 服务器中实现访问控制的好模式是什么?

    背景 我有一组模型 包括用户和各种其他模型 其中一些模型包含对用户的引用 我公开这些模型 以便通过 GraphQL API 生成的查询Graffiti https github com RisingStack graffiti 由 Mong
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户

随机推荐

  • 这是 iOS14 中预期的 @State var 行为还是一个错误?

    当我在 iOS14 sim 或设备上运行为 iOS14 编译的以下代码时 更新的 State 变量 选择 不会传递到显示为 sheet 确切的代码在 iOS 13 5 sim 或 13 6 设备上运行正常 如果我在视图中的某个位置放置一个文
  • Android 操作栏标签栏分隔线

    我在设置分隔线的可绘制对象时遇到问题 我的 style xml 如下所示
  • dtruss 在 OS X 10.11 上的 ps 上失败

    我想看看是哪个系统调用ps用于获取 OS X 10 11 El Capitan 上进程的命令行 并遇到以下错误 dtruss ps p 43520 o args dtrace failed to execute ps dtrace cann
  • 运行时错误:无法创建链接(名称已存在)Keras

    当我保存模型时 出现以下错误 RuntimeError Traceback most recent call last
  • 在旋转动画期间更新属性

    我正在 Kotlin 中制作旋转动画 并且在每个动画之后我想设置一个净rotationStart和rotationEnd 其中rotationStart值最初应设置为 0 然后假设每次旋转后的rotationEnd值 val rand Ra
  • NSWindow 中的底部栏

    我正在 Cocoa 中开发一个应用程序 我需要在窗口的底部栏显示进度 但我正在寻找一种解决方案 将底部栏放入NSWindow 期待解决方案 这是在窗口底部放置一个栏的代码 就像在取景器中一样 theWindow setContentBord
  • 使用中的 Gunicorn 连接:('0.0.0.0', 5000)

    我今天下午安装了 redis 它导致了一些错误 所以我卸载了它 但是当我使用以下命令启动应用程序时 此错误仍然存 在foreman start 关于修复有什么想法吗 foreman start 22 46 26 web 1 started
  • .net 4.0 中并行网络爬虫的最佳实践

    我需要通过代理下载很多页面 构建多线程网络爬虫的最佳实践是什么 Parallel For Foreach 是否足够好 还是对于繁重的 CPU 任务更好 您对以下代码有何看法 var multyProxy new MultyProxy mul
  • 如何在 IBM Worklight 中设置 MySQL

    我刚刚了解了IBM Worklight 我想知道如何设置和配置MySQL数据库 我已经设置了Worklight Adapter 但是 我不知道如何用MySQL创建数据库 您应该通过IBM Worklight 入门 http www ibm
  • Python+BeautifulSoup:从网页中抓取特定的表

    我正在尝试从以下位置抓取特定的表格 这个网页 http biz yahoo com c s html 我想要抓取的是股票信息 日期 公司名称 比例以及是否可选 这是我到目前为止所拥有的 from bs4 import BeautifulSo
  • 在模糊功能上获取 jquery 自动完成中的选定值

    我想要具有自动完成功能 当存在模糊事件时 文本框应填充值列表作为第一项 我希望具有与此链接中实现的功能相同的功能link http www redbus in 我有下面的代码 它填充在选项卡和输入键上 但不知道如何在模糊事件上实现相同的功能
  • .net4 中仍然存在内存泄漏 - 将内存 BitmapImage 绑定到 Image-Source

    我知道过去曾在这里提出过非常类似的问题 但都没有解决我的问题 我将内存中的图像加载到 BitmapImage 中 private static BitmapImage LoadImage byte imageData if imageDat
  • mini-css-extract-plugin 模块的 chunkFilename 的用途是什么?

    我现在使用 mini css extract plugin 模块 并设置其 chunkFilename 值并确保值 id css 通过运行它 但是 我看不到该文件 参考如下 https webpack js org plugins mini
  • JavaScript 新函数作用域 ReferenceError

    有什么办法可以让下面的代码工作吗 function var n abc new Function return alert n 如果我在浏览器中运行代码结果是 未捕获的引用错误 n 未定义 另外 我还需要在 新函数 中访问一些其他变量 例如
  • 将图像中的所有白色像素转换为黑色像素

    我有这张图片rand walk 2 png 我想将所有白色像素转换为黑色像素 这样就有了一张图片红色随机游走在黑色背景上 这意味着我不能仅仅反转图像的颜色 我当前的代码只是找到白色像素并将它们设置为黑色 from PIL import Im
  • ADO.NET 中具有 GROUP BY 功能的聚合函数

    这是一个更直接的问题 源于较早的问题我之前有过更普遍的问题 https stackoverflow com questions 828356 allowing a user to create a custom query of a tab
  • 带有自定义图块的动态谷歌地图可防止重复平移

    我有一个动态图块集 我不想允许平移超出其范围 下面的代码让我很接近 但用户仍然可以在严格边界之外水平滚动 因为它使用地图中心进行比较 var strictBounds new google maps LatLngBounds new goo
  • 无法授予对证书、标识符和配置文件的访问权限

    我购买了一个苹果开发者帐户 我正在尝试添加一个用户作为管理员并授予对证书 标识符和配置文件的访问权限 但该复选框已禁用 我无法勾选它 我认为您已经创建了 Apple 开发者帐户个人 要将其他用户添加为具有 证书 标识符和配置文件 访问权限的
  • Rails,Ruby,如何对数组进行排序?

    在我的 Rails 应用程序中 我正在创建一个数组 如下所示 messages each do message list lt lt id gt message id title gt message title time ago gt m
  • WIF滑动会话重新认证

    我已经在依赖方应用程序中实现了滑动会话 如中所述WIF 4 5 的滑动会话 http www cloudidentity com blog 2013 05 08 sliding sessions for wif 4 5 就目前而言 这很有效