RESTful身份验证意味着什么?它是如何工作的?我在谷歌上找不到好的概览。我唯一的理解是在URL中传递会话密钥(记住),但这可能是错误的。
当前回答
我认为restful身份验证涉及将身份验证令牌作为请求中的参数传递。示例是api对apikey的使用。我认为使用cookie或http身份验证不合格。
其他回答
@skrevel(http://www.berenddeboer.net/rest/authentication.html )讨论了一种复杂但真正失败的身份验证方法。
您可以尝试访问该页面(该页面应仅对经过身份验证的用户可见)http://www.berenddeboer.net/rest/site/authenticated.html没有任何登录凭据。
(很抱歉,我无法对答案发表评论。)
我会说REST和身份验证根本不混合。REST表示无状态,但“已验证”是一种状态。不能在同一层同时使用它们。如果你是一个RESTful的拥护者,并且不赞成状态,那么你必须使用HTTPS(即将安全问题留给另一层)。
首先也是最重要的,RESTful web服务是无状态的(或者换句话说,无会话的)。因此,RESTful服务没有也不应该包含会话或cookie的概念。在RESTful服务中进行身份验证或授权的方法是使用RFC 2616 HTTP规范中定义的HTTP授权头。每个请求都应该包含HTTP授权头,并且请求应该通过HTTPs(SSL)连接发送。这是在HTTPRESTful web服务中进行身份验证和验证请求授权的正确方法。我已经为Cisco Systems的Cisco PRIME Performance Manager应用程序实现了RESTful web服务。作为web服务的一部分,我还实现了身份验证/授权。
使用公钥基础结构(其中密钥的注册涉及适当的绑定)可确保公钥以确保不可抵赖的方式绑定到分配给其的个人
看见http://en.wikipedia.org/wiki/Public_key_infrastructure . 如果您遵循正确的PKI标准,可以识别并锁定不正确使用被盗密钥的人或代理。如果要求代理使用证书,则绑定变得非常紧密。一个聪明且行动迅速的小偷可以逃跑,但他们会留下更多的面包屑。
我认为restful身份验证涉及将身份验证令牌作为请求中的参数传递。示例是api对apikey的使用。我认为使用cookie或http身份验证不合格。
这里是一个真正且完全的RESTful身份验证解决方案:
在身份验证服务器上创建公钥/私钥对。将公钥分发给所有服务器。当客户端进行身份验证时:3.1.发行包含以下内容的代币:到期时间用户名(可选)用户IP(可选)密码散列(可选)3.2.使用私钥加密令牌。3.3.将加密令牌发送回用户。当用户访问任何API时,还必须传递其身份验证令牌。服务器可以通过使用身份验证服务器的公钥解密令牌来验证令牌是否有效。
这是无状态/RESTful身份验证。
注意,如果包含密码哈希,则用户还将发送未加密的密码以及身份验证令牌。服务器可以通过比较散列来验证密码是否与用于创建身份验证令牌的密码匹配。需要使用HTTPS之类的安全连接。客户端的Javascript可以处理获取用户的密码并将其存储在客户端,可以存储在内存中,也可以存储在cookie中,可能使用服务器的公钥进行加密。
推荐文章
- 跨REST微服务的事务?
- “刷新令牌”的目的是什么?
- 调用webrequest, POST参数
- 摘要认证和基本认证的区别是什么?
- 如何在Spring RestTemplate请求上设置“接受:”头?
- 什么是端点?
- 配置系统初始化失败
- REST API最佳实践:查询字符串中的参数vs请求体中的参数
- Java中SOAP和rest式web服务的主要区别
- 如何为Java创建REST客户端?
- file_get_contents(): SSL operation failed with code 1, failed to enable crypto
- 在Subversion中,我可以是我的登录名以外的用户吗?
- 在HttpClient和WebClient之间进行选择
- 执行没有实体主体的HTTP POST被认为是不好的做法吗?
- JavaScript/jQuery下载文件通过POST与JSON数据