【发布时间】:2014-03-17 18:01:21
【问题描述】:
我有一个使用表单身份验证的旧版 asp.net 应用程序。我正在进行更改,以便在某些情况下,它将用户反弹到我们的 ADFS 服务器以获取令牌。这一切正常,ADFS 将我发送回应用程序并使用有效令牌。
现在,这个应用程序已经足够老了,它没有使用内置的身份信息,更不用说claimsidentity了,所以当我得到一个有效的令牌并回到我的依赖方时,IsAuthenticated 是真的,我有一个有效的 ClaimsIdentity ,但是当然,我当前的代码无论如何都不会查看那些东西。重新设计整个应用程序以使用 Thread.CurrentPrincipal 的投资回报率非常低,因此当这些用户从 ADFS 回来并设置遗留/专有/旧用户/身份时,我必须为这些用户获取 Thread.CurrentPrincipal这个应用程序运行的类。我的问题是在哪里/何时这样做?
我的第一个想法是在 global.asax 页面中的一个事件处理程序中执行此操作,可能在 Application_BeginRequest() 或 Application_AuthenticateRequest() 中,但这只是猜测。在那里,我想我可以检查 Thread.CurrentPrincipal 是否经过身份验证,以及我的会话用户是否已配置。如果没有,我可以继续进行设置。我不肯定,如果这是正确的方法,或者如果是正确的方法,这两种方法中的哪一种是最佳位置,因为我不确定何时调用每种方法。
【问题讨论】: