【问题标题】:Setup identity in RP with ADFS token使用 ADFS 令牌在 RP 中设置身份
【发布时间】: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 是否经过身份验证,以及我的会话用户是否已配置。如果没有,我可以继续进行设置。我不肯定,如果这是正确的方法,或者如果是正确的方法,这两种方法中的哪一种是最佳位置,因为我不确定何时调用每种方法。

【问题讨论】:

    标签: asp.net identity adfs


    【解决方案1】:

    任何一个都可能合适。 Application_BeginRequest 会针对每个请求触发,Application_AuthenticateRequest 可能只会针对需要身份验证的请求触发,具体取决于您的 Web.config 设置。

    如果您要处理很多不需要身份验证的请求,那么在Application_AuthenticateRequest 中执行此操作可能会更有效。这里并没有真正的规范,因为您在系统之外工作,并且假设您所做的任何事情都是临时措施。

    【讨论】:

    • 您为什么认为这是一项临时措施?你的意思是,在有人认为“值得”回去重构所有身份代码之前,就像暂时一样?
    • 没错。你在这里架起了两个世界的桥梁。
    • 哈哈,是的,“临时”。我相信现在任何一天都会重构它。
    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 2017-10-30
    • 2023-03-09
    • 2020-02-11
    • 2020-03-23
    • 1970-01-01
    • 2017-06-28
    • 2011-11-06
    相关资源
    最近更新 更多