【问题标题】:Windows Identity Foundation Required Claims From AD FS来自 AD FS 的 Windows Identity Foundation 要求声明
【发布时间】:2014-11-28 21:23:51
【问题描述】:

我的问题归结为,我可以在应用之间切换时刷新用户的声明吗?据我所知,答案很可能是“不”。我已经完成了添加“claimTypeRequired”的舞蹈,但这没有帮助。

假设我有多个应用程序,App1、App2、App3、App4、App5。

一旦您通过任何应用程序的身份验证,似乎 AD FS 就不会再次被击中,并且没有办法绕过退出,是吗?因此,有了这种想法,无论我登录哪个应用程序,我都必须获得所有应用程序的所有声明。作为旁注,我正在通过 AD FS 中的 SQL 存储过程创建这些声明。 usp_GetAppClaims @AppID = 1, @UserGuid = 'GUID'

我将每个应用程序的一组声明存储在各自的 URI 中,其中包含多个值。类似于“角色”声明。例如:

我是否让这件事变得比需要的更困难?如果我需要拥有所有声明,我会稍微担心令牌大小。 20 个应用程序,每个应用程序有 10-50 个声明... 最大 4kb Cookie 对吗?也许这在大多数情况下是无关紧要的。

【问题讨论】:

    标签: active-directory wif adfs adfs2.0 windows-identity


    【解决方案1】:

    问题最终是两个应用程序使用相同的 cookie。发现您必须在 web.config 中为 cookie 指定一个唯一名称,否则在应用程序之间切换时您将不会被重定向回 AD FS。

    【讨论】:

      【解决方案2】:

      Wrt,“刷新”,即 Value1 的值在访问 App1 和 App2 之间发生变化,然后不 - 尽管“在后台”,您必须注销。

      就大型 cookie 而言,曾几何时 (WIF 3.5) 有“会话模式”,即Switching to WIF SessionMode in ASP.NET

      【讨论】:

        【解决方案3】:

        如果您在last“发行转换规则”中进行声明查询,那么每个应用程序始终会获得自己的声明集。

        如果您有一个发行人链,并且索赔来自链中的第一个,那么我不知道有任何方法可以区分每个 RP(在链的末端)。为了避免庞大的声明集,一些人(如果可能)在 RP 中使用 WIF ClaimsAuthenticationManager 进行。

        【讨论】:

        • 在我不断研究这个问题时,ClaimsAuthenticationManager 可能最终成为最佳选择。你有没有机会解释一下你的第一点?
        • 如果 ADFS 服务器是 IdP(帐户在 AD 中),那么您可以在 Acceptance 转换规则中查询您的 SQL。然后所有 RP 的声明都在那里(大型令牌问题等)。如果您仅在(每个 RP)发行转换规则中执行此操作,则每个 RP 都有自己的一组声明。 (ADFS 的小 cookie,RP 的小 cookie。)
        • 啊,现在我明白你在说什么了。谢谢你的解释。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-07
        • 2011-10-04
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多