【问题标题】:IIS WCF Service authentication, javascript clientIIS WCF 服务认证,javascript 客户端
【发布时间】:2017-06-20 15:46:07
【问题描述】:

保护将由 javascript 客户端调用的 IIS 托管 REST WCF 服务的最佳(或至少一种有效)选项是什么?

我拥有的服务是一个 REST 服务,它从客户端接收 GET 和 POST,它通过 http 和 https 运行良好。

我一直在尝试实现身份验证,并且我有一个具有自己的用户和角色结构的数据库(所以我想避免 Windows 身份验证) 我一直在尝试不同的事情,但我无法得到任何工作。

我尝试的最后一件事是使用 ServiceAuthorizationManager 的基本身份验证(传输)和使用自定义验证器的用户名身份验证(消息)。

我不知道是否可以将自定义验证器(继承自 System.IdentityModel.Selectors.UserNamePasswordValidator)与基本身份验证一起使用,或者是否可以在 http(s) REST 请求中添加用户名身份验证凭据(也许它需要成为 SOAP 服务?)。

我还想使用自定义 RoleProvider 之类的东西来控制基于用户组 /roles 的方法访问。

谢谢。

【问题讨论】:

  • 不是一个真正的答案,但我正在关注你的问题,因为我有一个非常相似的即将到来的项目。我已经将其保存在地平线上,因为我知道我想实现令牌身份验证,它可能值得一读,或者可能对您的需求无用。不过分享一下也无妨。 developerhandbook.com/c-sharp/…
  • @TravisActon 我不认为这正是我需要的,但无论如何谢谢。我想我终于做对了。一个主要问题是,如果没有 Windows 用户,我无法通过第一次身份验证,而且我有自定义用户。如果它按预期工作,我将发布相关代码作为答案
  • 强烈建议您在使用基本身份验证时强制使用 HTTPS - 否则客户端将通过网络以纯文本形式发送您的用户凭据。
  • 你需要 WCF 吗?如果您只关心 http(s) + REST,那么 WebAPI 会容易得多。

标签: c# wcf ssl iis


【解决方案1】:

有几种方法可以做到这一点:

**1。使用客户端证书身份验证。

查看这些文章:**

您可以根据客户通过的证书(使用指纹)对客户进行授权,并且可以轻松对其进行分类。

2。使用 SQL Membership Provider 实现基本身份验证。

参考这些文章:

您必须决定最适合您的目的以及将来更容易维护的方法。证书管理在大多数情况下都是一件痛苦的事情,但它有其自身的优势。我个人会选择第二个选项,即使用 Basic Auth with SQL members provider

【讨论】:

    猜你喜欢
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    相关资源
    最近更新 更多