【发布时间】:2013-04-09 11:26:02
【问题描述】:
我有一个 Web API Web 服务,许多客户端应用程序使用该服务使用不同的技术,如 Java、.NET 等。因此,我的用户凭据是存储在单独的数据库中。
我的 Web 服务托管在 IIS 中,并且我已在服务器端配置并启用 SSL,以确保请求/响应消息经过加密和签名。
我还配置了 IIS 的 IP 地址限制功能,以允许来自少数已知 IP 地址的请求。
我不喜欢使用 基本身份验证,因为它会在每条消息中以纯文本形式发送凭据,尽管消息是使用 SSL 加密的。
显然,我无法使用集成 Windows 身份验证,因为我的用户与我的服务器不在同一个域中。
我无法使用 表单身份验证,因为我的客户端不是基于浏览器的。
那么,为我的 Web 服务实施身份验证和授权的最佳方式是什么?
我在想一种方法是提供一个 Authenticate(username, password) web 方法,它的行为类似于 Identity Provider/Security-token-service 并生成一个特定于该用户的令牌,该令牌在特定时间后过期。然后客户端必须在每个 Web 方法请求中发送身份验证令牌,我通过为我的控制器创建自定义授权过滤器来确保它。
这种方法的优点是用户不必在每个请求中都发送用户名/密码,而只需发送一个临时令牌。缺点显然是管理令牌寿命;什么时候到期?例如如果在一小时内没有提出请求。
为我的网络服务实施身份验证和授权的最佳方式是什么?
【问题讨论】:
-
如果会话受 SSL 保护,那么数据不会完全以明文形式发送,对吧? :-)
标签: asp.net-mvc web-services security asp.net-web-api