具有自定义用户名的WCF服务身份验证&密码

时间:2013-01-21 08:35:35

标签: wcf security authentication

我必须实现可由已知客户端使用的公共WCF服务。我还想使用自定义标识(而不是Windows身份验证)对客户端进行身份验证。

我已经使用自定义用户名和密码探索了WCF安全性以进行身份​​验证。由于我必须为Hetrogenious网络实施解决方案,我不能使用Windows身份验证。

我找到了两种方法可以将自定义身份验证合并到WCF中。我对以下每种方法的查询都很少。

1)通过“UserNamePasswordValidator”类。我们可以创建自定义用户名密码验证器并从数据库验证用户。这种方法完全可以实现SSO(单点登录),因为每个请求都有SOAP头中的凭据。客户无需在每次请求之前验证自己。

问题:

  1. 这种方法是否也可以轻松扩展授权?由于身份验证是在服务调用之前通过从SOAP头获取凭据而发生的。凭证也不是ObjectContext的一部分,我觉得授权方法并不简单。
  2. 要遵循这种方法,我们需要使用Brokered Authentication模式,为此我们需要第三方证书。这是不可取的,因为我们必须在项目中增加证书成本。
  3. 如果我们使用邮件安全性来记录邮件,为什么我们需要证书?仅为客户身份?我们不能只在生产中使用自签名证书,因为我们知道谁会使用这项服务吗?
  4. 2)通过“ServiceAuthenticationManager”类。我只知道使用此类的一种方法,即使用直接认证模式实现解决方案。在验证用户之后,我们需要通过自定义标头提供它的身份或令牌,以便为服务实现SSO(单点登录)的所有后续请求

    问题:

    1. 这是一种有效的公共服务方式吗?我们是否应该通过每个请求中的自定义标头强制用户提供凭据(或在我们的服务经过身份验证后提供的令牌)?
    2. 此方法不需要认证,因此我们可以节省项目成本。这有足够的理由选择这种方法吗?
    3. 我个人认为第一种方法易于实现,它是在WCF服务中实现身份验证的更标准方法,但唯一的问题是我们需要第三方证书。

      请回答我的问题,如果可能,请提出符合我要求的最佳方法。

      谢谢,

      ANKUR

0 个答案:

没有答案