【发布时间】: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 会容易得多。