2

我的任务是编写一个将使用 ADFS 进行身份验证的 asp.net Web 应用程序。但是,在应用程序的某个阶段,用户必须重新进行身份验证并再次提供他们的用户名和密码。

这可以用 ADFS 完成吗?

4

5 回答 5

3

ASP.NET 应用程序可以是 STS 的主动客户端,也可以是被动客户端。当您需要加强时,提供一些输入字段并要求用户提供他们是谁的额外证明。使用WSTrustChannelFactory,将此信息(可能还有原始令牌)传递给 STS 以获得更新鲜的新令牌,并包含足以授权更高价值交易的声明。

于 2011-02-11T11:13:13.517 回答
1

重认证的目的是什么,即用户需要证明什么?

我假设应用程序需要一个具有最近身份验证时间戳(例如,在最后 10 秒内)的登录令牌,以便应用程序可以合理地确定客户端系统确实仍处于同一用户的控制之下。

(顺便提一下,注意 Web 服务器和 AD FS 服务器之间的时钟差异。)

在接下来的几个月里,我将调查一个类似的场景,我目前的想法是使用SessionAuthenticationModule.SessionSecurityTokenReceived 事件,如Vittorio Bertocci 的这篇博文中所述。但是,这不可能是完整的解决方案,因为这只会强制 AD FS 发出令牌,但不会强制 AD FS 发出具有最近身份验证时间戳的令牌。

所以还没有答案,但也许这些提示会有所帮助。

于 2011-02-08T22:15:37.097 回答
1

本文描述了在这种情况下可能对您有所帮助的“升级”过程。不过我没用过,所以不能详细评论。它看起来非常接近您正在尝试做的事情。

于 2011-02-21T03:05:30.183 回答
0

减少 TokenLifetime 属性使您可以重新验证用户。假设 TokenLifetime 默认为 60 分钟,但它会在 20 分钟前显示弹出窗口。但可能会有数据丢失

于 2015-08-03T06:53:04.527 回答
0

对于使用 WIF 的 ASP.NET,您使用 WS-Federation 作为与 ADFS 交互并获取令牌的协议。在此范围内,您可以在对 ADFS 的登录请求中指定 wrefresh=0。发送此信息时,ADFS 会忽略任何先前的 cookie 状态(Web SSO)并执行新的身份验证,因此将向应用程序颁发新令牌。在加入内网域的机器的情况下,这将是无声的。

要进行用户交互,您可以执行以下两项操作之一

谢谢//山姆(@MrADFS)

于 2015-08-24T12:55:59.197 回答