传播 ServiceSecurityContext

Posted

技术标签:

【中文标题】传播 ServiceSecurityContext【英文标题】:Propagate ServiceSecurityContext 【发布时间】:2011-02-01 10:10:27 【问题描述】:

我有一个调用 WCF 服务的 Winform 应用程序。问题是该服务 (A) 调用自己的另一个 (B) 想要访问初始调用者的 ServiceSecurityContext.Name(Winform 的身份)。

两者都托管在 IIS 上并使用 NetTcpBinding。

我尝试在服务 B 方法上添加此属性:

[OperationBehavior(TransactionScopeRequired = true,Impersonation=ImpersonationOption.Allowed)]

我在服务 A 上添加了一个 Endpoint 的行为:

<endpointBehaviors>
<behavior name="impBehavior">
    <clientCredentials>
        <windows allowedImpersonationLevel="Impersonation" />
    </clientCredentials>
</behavior>

但这不起作用。我能做什么?

最好的尊重,

史蒂芬。

【问题讨论】:

【参考方案1】:

在您的情况下,我认为应该要求而不是简单地允许冒充。

实现这一点的最简单方法是在您的服务 B 配置文件中添加一个服务行为,其中包含以下元素:

<serviceAuthorization impersonateCallerForAllOperations="true" />

【讨论】:

【参考方案2】:

如果服务 B 与服务 A 位于不同的服务器上,这将不起作用,因为如果没有为服务器提供非常特定的 AD 特权(管理员通常不会放弃,因为他们有重大安全隐患)。

如果 A 和 B 在同一台服务器上,那么如果 A 对 B 的调用设置为使用模拟(并且对 A 的调用允许它),它应该可以工作。

【讨论】:

【参考方案3】:

我终于解决了这个问题。问题是我在错误的地方配置了客户端的端点行为。

它应该在 Winform 的级别(以服务 A 作为客户端)而不是在服务本身(以服务 B 作为客户端)进行配置。

现在一切正常。

感谢您的帮助。

Gtz, 斯蒂芬。

【讨论】:

以上是关于传播 ServiceSecurityContext的主要内容,如果未能解决你的问题,请参考以下文章

在声明身份验证的 SharePoint 2010 中托管的 WCF 服务中的模拟

深度学习正向传播反向传播和计算图(backprop)

反向传播

反向传播算法的算法简介

前向传播和反向传播

007-卷积神经网络-前向传播-反向传播