6

我需要从 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 等价物是什么?

4

2 回答 2

5

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

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

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

于 2013-02-12T20:09:51.307 回答
0

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

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

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

由于您要使用 Oracle,因此您可能需要显式创建 Windows 上下文并进行模拟(请参阅:为用户 (S4U) 令牌创建服务)。

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

于 2015-01-22T03:59:48.277 回答