我正在尝试使用基于令牌的身份验证创建Rest Api。
是否有最佳做法将凭证从客户端传递到服务器以生成令牌。作为 HTTP标头或邮件正文中的JSON字符串?
我一直在寻找,但未能找到任何具体的答案。
答案 0 :(得分:2)
不要试图重新发明轮子。有一个好的起点,请看这里: best-practices-for-securing-a-rest-api-web-service
对于我的API实现和我的需求,我选择一个简单的BasicAuth(使用标头发送凭证)和任何其他令牌,以及我在每次请求时添加到JSON有效负载的安全相关数据。 别忘了将SSL设置为强制性。
答案 1 :(得分:0)
我建议使用Open ID Connect身份验证协议,更具体地说,使用实现此协议的第三方服务或实体库。 Open ID Connect构建于OAuth 2之上,现在广泛用于支持各种开发语言和框架:http://openid.net/developers/libraries/
成功的身份验证步骤会生成“访问令牌”,然后可以将其传递到REST API,并在其中验证其真实性。在Open ID Connect中,此标记作为HTTP标头与POST主体一起传递。
如果您推出自己的协议,或者甚至开发自己的Open ID Connect实现,请注意细节,因为很容易忽略一些小问题,从而创建一个不安全的API。有关我所指的示例,请参阅OAuth 2.0 Threat Model and Security Considerations。由于这种担忧,我总是建议使用现有的,经过严格审查的实施。