gpt4 book ai didi

.net - 通过 Windows 服务的 WCF - 验证客户端

转载 作者:行者123 更新时间:2023-12-02 15:42:00 27 4
gpt4 key购买 nike

我是 WCF/安全新手。我创建了一个通过 Windows 服务托管的 WCF 服务。 WCF 服务从通过 Windows 身份验证保护的第三方数据源获取数据。我需要:

  1. 通过 Windows 服务、WCF 服务将客户端的权限传递到第 3 方数据源,或者...

  2. 限制谁可以调用 Windows 服务/WCF 服务给特定 AD 组的成员。

关于如何完成这些任务有什么建议吗?

最佳答案

这是在内联网/公司防火墙后面的场景吗?

如果是这样,我将使用带有传输安全性和 Windows 客户端凭据的 netTcp 绑定(bind)(在这种情况下最快)。在这种情况下,调用者的 Windows 凭据将传递到您的 WCF 服务中。

使用标准的基于角色的安全性,您可以使用主体权限将调用者限制为给定的服务方法 - 您可以以声明方式限制谁可以调用方法,如下所示:

[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
[PrincipalPermission(SecurityAction.Demand, Name = "JohnDoe")]
public void YourSensitiveMethod();

或者您可以以编程方式检查服务方法中是否存在 WindowsIdentity 并使用它执行您想要执行的任何操作:

if(ServiceSecurityContext.Current.WindowsIdentity != null)
{
WindowsPrincipal principal = new WindowsPrincipal(ServiceSecurityContext.Current.WindowsIdentity);
if(!principal.IsInRole("Administrators")
{
return; // or throw a FaultEXception or something
}
}

这有帮助吗?

更新:与 WCF 和安全相关的所有内容的最终资源将是 WCF Security Guidance在 Codeplex 上。您应该在该页面上找到几乎所有内容的示例和操作方法(以及有关它们的解释!)。

要使用传输安全性和 Windows 身份验证作为客户端凭据来保护 netTcpBinding,请使用以下绑定(bind)配置:

<bindings>
<netTcpBinding>
<binding name="SecuredByWindows">
<security mode="Transport">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</netTcpBinding>
</bindings>

关于.net - 通过 Windows 服务的 WCF - 验证客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2613984/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com