我计划实现一个面向外部的ASP.NET web应用程序,以及一个提供外部可用的API的Windows Communication Foundation (WCF)服务。我将使用Windows Identity Foundation (WIF)推出自己的安全令牌服务(STS),从而为web应用程序和服务提供安全性。
这些文章描述了我打算如何实现这一点的基础:http://msdn.microsoft.com/en-us/magazine/ee335707.aspx和http://devproconnections.com/development/generating-saml-tokens-wif-part-2
结合Vittorio Bertocci关于这个主题的优秀书籍:http://www.amazon.com/Programming-Windows-Identity-Foundation-Dev/dp/0735627185/ref=sr_1_6?ie=UTF8&qid=1366300926&sr=8-6&keywords=vittorio+bertocci提供的信息
我应该拥有完成这项任务所需的所有工具和信息。该应用程序的用例如下:用户登录到我们拥有的ASP应用程序,包括用户身份验证和授权机制。在此应用程序上,他们单击使用SAML单点登录(SSO)到第三方应用程序的链接(与我们有密切业务关系的第三方应用程序)。在此第三方应用程序上,用户可以透明地处理我们在组织内部的另一个应用程序上存储的文件。基本上,他们将对我的web应用程序/WCF服务执行透明/静默SAML SSO,以便在登录到第三方web应用程序时保存或检索文档。
正如我之前所说的,我想我已经掌握了如何实现此过程的授权和身份验证的基础知识。
但是,我的安全团队要求我们确保从外部公开但完全归我们所有的原始web应用程序登录到第三方站点的用户与out site具有活动会话。简而言之,我们需要确保此用户实际登录到站点A,正在使用站点B,但希望通过确保他们仍然登录到站点A来访问站点C上的资源。
我如何获取有关此用户的信息?现在,我确实为站点A推出了我自己的角色提供程序,但是身份验证是使用较旧的用户名/密码机制通过表单身份验证执行的,该机制不包括使用ASPAS2.0“标准”成员身份提供程序。因此,Security.Web.Membership对我来说是不可用的。
最后,此相同过程将适用于active directory上的内部用户,这些用户将从我们的内部网络登录到站点B,然后再次使用站点C。我相信我们将使用ADFS v2进行身份验证。在向站点C进行身份验证之前,是否有任何关于确保所述用户在AD中处于活动状态的提示?
发布于 2013-04-19 00:43:39
跟踪网站用户是否仍然活跃的唯一合理方法是使用短时间(例如,10分钟)的令牌,该令牌在用户每次浏览网站时自动重置。这样,您就可以说用户在过去10分钟内处于活动状态并已登录。您将需要跟踪服务器上的持久存储中的令牌,该存储会随着最近的用户操作/令牌重置时间进行更新,以便后端系统可以询问“此用户是否仍处于活动状态?”,您还需要向web客户端传递一些内容,它们可以在每次后续web请求时将这些内容传递回服务器,以保持会话的活动状态。这通常是一个会话cookie。cookie可以与令牌相同,或者,如果您不希望浏览器应用程序知道真实的令牌,则可以将cookie设置为映射到服务器内部令牌的随机值。如果用户主动注销web应用程序,则会在后端数据库中使令牌无效。
其他技术可能包括保持长时间运行的http连接打开(ala基于web的irc聊天),但这会消耗大量的网络资源,特别是在您的服务器和防火墙上,而且它并不能真正提供更好的保证,即用户实际上仍在浏览器中查看web应用程序。一个会话已经打开了30分钟,但是在20分钟内没有页面导航,这听起来像是用户去吃午饭了,却没有打开浏览器窗口。如果您无论如何都要跟踪页面导航,那么保持http连接打开并不会给您带来任何好处。
https://stackoverflow.com/questions/16088017
复制相似问题