【问题标题】:accessing wcf client identity on service访问服务上的 wcf 客户端身份
【发布时间】:2011-11-10 20:25:50
【问题描述】:

经过几个 WCF 教程,我可以开发一个 WCF 客户端/服务器应用程序,服务和客户端应用程序都是 Windows 窗体应用程序。我可以通过指定用户名和密码来使用每个客户端调用服务。我的 WCF 服务应用程序还显示所有连接的客户端及其用户名。但是,当多个客户端向服务发送请求时,我无法识别哪个用户调用了该方法。这一点很重要,因为我的应用程序倾向于为每个客户端处理拥有自己的会话,就像任何常规 ASP.NET 应用程序一样。每个用户都有自己的身份和自己的应用程序域。

此外,我希望我的服务将消息发送回客户端,因此我实现了回调合约。此外,我正在使用 netTcpBinding,因为我的应用程序需要在我的 Intranet 上运行。

如何在 WCF 客户端/服务器应用程序中实现此场景?

有什么帮助吗??

谢谢


感谢您之前的回复。它对我真的很有帮助。 现在,如果我想使用用户名和密码的自定义身份验证怎么办。 假设我有 50 个具有有效用户名和密码的客户端。如何获取在特定时间点调用服务方法的客户(从这 50 个客户中)的身份?

谢谢

【问题讨论】:

    标签: wcf client-server wcf-security


    【解决方案1】:

    在您的服务器端代码中,您应该能够从安全上下文中检索调用者的身份 - 类似于:

    if(ServiceSecurityContext.Current != null &&
       ServiceSecurityContext.Current.PrimaryIdentity != null)
    {
       string userName = ServiceSecurityContext.Current.PrimaryIdentity.Name;
    }
    

    如果您正在调用具有 Windows 身份验证的服务(这可能也适用于您 - 如果您在公司 LAN 上,看起来) - 您应该能够访问安全上下文的 .WindowsIdentity (对于任何其他身份验证机制,这将是 null)。

    【讨论】:

    • 您好,感谢您的回复。如果我需要更多帮助,我会试一试。
    猜你喜欢
    • 2017-03-17
    • 2012-04-15
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    相关资源
    最近更新 更多