WIF STS实现使用ADSF连接检查活动ASP.NET登录/会话 我计划实现一个面向外部的ASP.NET Web应用程序,以及一个提供外部可用API的Windows通信基础(WCF)服务。我将通过使用Windows身份基础(WIF)滚动我自己的安全令牌服务(STS)来提供Web应用程序和服务的安全性。

WIF STS实现使用ADSF连接检查活动ASP.NET登录/会话 我计划实现一个面向外部的ASP.NET Web应用程序,以及一个提供外部可用API的Windows通信基础(WCF)服务。我将通过使用Windows身份基础(WIF)滚动我自己的安全令牌服务(STS)来提供Web应用程序和服务的安全性。,.net,wcf,wif,.net,Wcf,Wif,以下文章介绍了我打算如何实现这一点的基本知识: 和 结合Vittorio Bertocci关于该主题的优秀著作提供的信息: 我应该拥有完成这项任务所需的所有工具和信息。该应用程序的用例如下:用户登录到我们拥有的ASP.NETWeb应用程序,包括用户身份验证和授权机制。在这个应用程序上,他们单击一个链接,该链接使用SAML单点登录(SSO)到第三方应用程序(我们与之有着紧密的业务关系)。在这个第三方应用程序上,用户可以透明地处理我们存储在公司内部另一个应用程序上的文件。基本上,他们将对my w

以下文章介绍了我打算如何实现这一点的基本知识: 和

结合Vittorio Bertocci关于该主题的优秀著作提供的信息:

我应该拥有完成这项任务所需的所有工具和信息。该应用程序的用例如下:用户登录到我们拥有的ASP.NETWeb应用程序,包括用户身份验证和授权机制。在这个应用程序上,他们单击一个链接,该链接使用SAML单点登录(SSO)到第三方应用程序(我们与之有着紧密的业务关系)。在这个第三方应用程序上,用户可以透明地处理我们存储在公司内部另一个应用程序上的文件。基本上,他们将对my web app/WCF服务执行透明/静默SAML SSO,以便在登录到第三方web app时保存或检索文档

正如我之前所说的,我想我已经掌握了如何在此过程中实现授权和身份验证的基本知识

然而,我的安全团队提出的一个问题是,我们确保从外部登录到第三方站点的用户(外部公开但完全由我们发起的web应用程序所有)与外部站点有一个活动会话。简而言之,我们需要确保该用户实际登录到站点A,正在使用站点B,但希望通过确保他们实际上仍然登录到站点A来访问站点C上的资源

如何获取有关此用户的信息?现在,我确实为站点A推出了自己的角色提供程序,但身份验证是通过使用旧用户名/密码机制的表单身份验证执行的,该机制不包括使用ASP.NET2.0“标准”成员身份提供程序。因此,Security.Web.Membership对我不可用


最后,这个相同的过程将适用于active directory上的内部用户,他们将从内部网络登录到站点B,然后再次使用站点C。我相信我们将使用ADFSv2进行身份验证。在根据站点C进行身份验证之前,确保所述用户在广告中处于活动状态的任何提示?

跟踪网站用户是否仍然处于活动状态的唯一合理方法是使用具有短过期时间(例如10分钟)的令牌,该令牌在用户每次浏览网站时自动重置。有了这个,你可以说用户在过去10分钟内处于活动状态并登录。您需要跟踪服务器上的持久存储中的令牌,该令牌随最近的用户操作/令牌重置时间而更新,以便后端系统可以询问“此用户是否仍处于活动状态?”,您需要将某些内容传递给web客户机,他们可以在每次后续web请求时将这些内容传递回服务器,以保持会话的活动性。这通常是一个会话cookie。cookie可以与令牌相同,或者如果不希望浏览器应用程序知道真实令牌,可以将cookie设置为映射到服务器内部令牌的随机值。如果用户主动注销web应用,则您将使后端数据库中的令牌无效


其他技术可能涉及保持长时间运行的http连接打开(ala基于web的irc聊天),但这会消耗大量网络资源,尤其是服务器和防火墙上的资源,而且这并不能真正保证用户仍在浏览器中查看web应用。如果会话已打开30分钟,但在20分钟内没有页面导航,则听起来用户好像去吃午饭了,而浏览器窗口保持打开状态。如果您必须跟踪页面导航,那么保持http连接打开并不能给您带来任何好处。

谢谢您的回复。我相信我们将无法实现长期运行的HTTP连接,原因有很多,包括所需的资源。我不确定我是否理解您描述的会话cookie令牌机制。仅供参考,我可以完全访问网站A和C。我基本上拥有它们。我们也在站点a的数据库中跟踪基于用户的页面点击。但是,如果他们正在浏览站点B,那么他们可能不会在站点A上有任何“最近”的活动。那么,您建议如何确定用户是否“登录”到站点A?我想这就是我要问的问题。站点A具有会话状态cookie和表单身份验证cookie。forms auth cookie确实有一个与之关联的超时。我已经确认,用户可以登录站点a,SSO登录站点B,并在扩展浏览站点B时在站点a上让表单验证cookie超时。我对整个SAML SSO过程(现在)不太熟悉。当用户从站点A登录到站点B时,用户的机器上是否存储了SAML SSO令牌cookie?您是说将此超时设置为较低的数字吗?对于基于浏览器的web应用程序,服务器了解用户是否仍在登录的唯一方法是在服务器上跟踪有关用户的信息。因此,服务器维护一个身份验证令牌表,该表包含颁发的身份验证令牌、颁发给谁、何时以及何时到期。用户是否仍登录到站点A?在表中查找并根据记录的令牌过期时间进行判断。下次用户在站点A上导航时,令牌可能会被刷新。出于您的目的,知道用户上次从站点A请求页面时登录到站点A可能就足够了,无论是否过期。我不熟悉SAML SSO的细节,但知道浏览器的工作方式,站点A将有一个浏览器会话cookie,其中包含站点A的身份验证令牌信息