gpt4 book ai didi

没有证书的 WCF 用户名

转载 作者:行者123 更新时间:2023-12-04 13:02:36 26 4
gpt4 key购买 nike

我正在做一个需要以下内容的项目。

  • 服务器端的 WCF 服务 (.NET 3.5)
  • 客户端的 WPF 客户端 (.NET 3.0)

  • 我有一个现有的应用程序,我必须使用(在服务器端)的身份验证和授权。我还需要在 WCF 服务的线程主体(站点对象)中存储一些关于用户的元数据。我这样做是为了在必要时可以在 WCF 服务中使用它;一些业务逻辑可能需要它。所以我的计划是做以下......

    为服务器创建一个自定义 ServiceAuthorizationManager,我将在其中登录用户并从现有应用程序中获取角色。我将缓存“站点”对象,并根据进一步的请求从缓存中提取。我还需要一个 CustomPrincipal 对象来保存我的自定义数据。我想模拟用户,以便可以使用 WCF 中的内置角色过滤,如下所示:
    [PrincipalPermission(SecurityAction.Demand, Role = "Role1")]
    public string[] RolesForUser(string username){}

    我尝试将 ASP.NET 授权与自定义角色提供程序一起使用,但无法在 Current Principal 上设置任何内容。我还尝试使用自定义 IAuthorizationPolicy,但出现了问题。这些问题涉及能够使用 WCFClient.exe 应用程序,当它发现(使用 mex 端点)时,它不会提供任何凭据,因此登录会失败。我最终决定 ServiceAuthorizationManager 是正确的方法,但我愿意接受其他建议。

    在客户端上,我将收集凭据并将它们放入 WCF 代理类,如下所示。
    proxy.ChannelFactory.Credentials.UserName.UserName = userName;
    proxy.ChannelFactory.Credentials.UserName.Password = password;

    当我开始走这条路时,我注意到我无法在我的管理器类的 CheckAccessCore 方法中获取用户名/密码。进一步调查表明,我真的应该在自定义 UserNamePasswordValidator 中进行身份验证。所以我创造了其中之一。问题是 validate 方法从未被调用过。

    进一步的调查表明,为了调用 validate 方法,我的 WCF 服务必须具有消息或传输级别的安全性。问题在于,如果没有 X.509,我无法弄清楚如何拥有消息或传输级别的安全性。证书。该产品将进入数百台令人难以置信的锁定机器,并且无法安装证书。

    有没有办法在不安装证书的情况下完成我的要求?

    最佳答案

    实际上这是可能的,但您需要实现自己的绑定(bind)。

    Yaron Naveh 开发了一个 WCF 绑定(bind),可以通过 HTTP 启用明文用户名/密码。他的article包括绑定(bind)的代码。

    关于没有证书的 WCF 用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/379526/

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