【问题标题】:c2WTS (Claims to windows token service) in .net 4.5.net 4.5 中的 c2WTS(对 Windows 令牌服务的声明)
【发布时间】:2013-01-26 15:01:02
【问题描述】:

我需要从 Claims 获取 Windows 令牌。该解决方案是使用 ADFS 2.0 并在 IIS ASP.NET 4.0 中运行的 Claims Aware WCF Web 服务。 (模拟数据库访问需要 kerberos 令牌)

在 .NET 3.5 和 4.0 中,c2WTS 服务用于从声明中获取 Windows 身份:

WindowsIdentity winId = S4UClient.UpnLogon(upn);

但 c2WTS 的文档声明如下:“...[从 .NET Framework 4.5 开始,Windows Identity Foundation (WIF) 已完全集成到 .NET Framework。本主题涉及的 WIF 版本,WIF 3.5,已弃用,仅应在针对 .NET Framework 3.5 SP1 或 .NET Framework 4 进行开发时使用..."

.NET 4.5 中的 c2WTS 等价物是什么?

【问题讨论】:

    标签: .net wcf .net-4.5 claims-based-identity adfs2.0


    【解决方案1】:

    没有等价物。但是您仍然可以安装 WIF 以获得 C2WTS 服务。

    Saml 安全令牌处理程序具有返回 Windows 标识的 MapToWindows 功能。这类似于 C2WTS 所做的 - 但

    1) windows 身份只能用于本地授权 - 要模拟您需要 SYSTEM 权限。这就是 C2WTS 的运行方式。 2) 委托您需要在 AD 中配置约束委托的令牌(就像使用 C2WTS 一样)

    【讨论】:

    • 感谢您的建议。尚未在 Saml 安全令牌中尝试过 .NET 4.5 MapToWindows,但正在使用 C2WTS。我能够获得一个身份,但在 Linux 上对 Oracle DB 的委派不起作用。我们正在努力将 AD 中的约束委派与协议转换为 Linux 上的 Oracle 服务。我会将其标记为答案,因为它对我的问题是正确的,即使事情还没有作为一个整体发挥作用。
    【解决方案2】:

    此时已内置 S4U。你不需要 C2WTS。你可以这样做:

    var id = new WindowsIdentity(valueFromClaim);
    // continue your impersonation
    

    对于服务调用,如果您将凭据设置为 DefaultCredentials,则应该没问题,因为这似乎会在 SAML 令牌处理程序上执行 ToWindowsIdentity。

    由于您要使用 Oracle,您可能需要显式创建 Windows 上下文并进行模拟(请参阅:Creating a service for user (S4U) token)。

    综上所述,您必须正确配置约束委派,否则委派将不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-31
      • 2015-09-14
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 2018-11-03
      • 2012-06-28
      相关资源
      最近更新 更多