我目前正在为使用Django和Django restframework的应用程序创建rest api,即uri。其中一个api端点是login,它将具有类似app/login的api端点。此uri不仅使用用户名和密码对用户进行身份验证,而且还检查用户是否具有有效的会话。
此外,我希望在post请求中将其作为JSON传递,而不使用任何HTML模板表单,类似于:
{
'username' : 'username',
'password': 'password'
}
我知道这很危险,因为“用户名”和“密码”将以明文形式附加在POST请求中。但是我需要这样做,因为应用程序的前端部分将被单独设计,并且将只使用api端点,那么,我如何实现这一点?另外,对用户、会话或令牌进行身份验证的最佳方式是什么?我参考了许多链接,但不能理解每种身份验证类型的最佳用例。
另一件事是,我对令牌身份验证是如何工作的感到困惑。这是采用用户凭据,还是仅接受已提供给每个用户实例的令牌,并仅根据该令牌验证用户?
发布于 2016-07-04 23:57:41
如果您担心安全性,请确保在您的网站上使用SSL。Password将以明文的形式在互联网上以的形式发送,所以非常建议您这样做。为此,您需要一个SSL证书。你可以在线阅读更多关于它的信息。
即使您有一个HTML模板表单,密码仍将以明文形式存储在您的请求中的某处。从安全性的角度来看,这是没有区别的。
至于认证用户、令牌或会话身份验证的最佳方式是什么,这取决于您的需求。对于移动应用程序,你通常会使用令牌身份验证,因为它更容易处理,单页面web应用程序也是如此。但是,如果您正在使用一个内置了会话身份验证的框架,我会说这是最好的选择。
令牌身份验证在登录时以用户名和密码的形式获取用户凭据。当用户想要对请求进行身份验证时,它会以"Authorization: token af538baa9045a84c0e889f672baf83ff24“的形式发送一个带有令牌的头部字段。有些人决定以不同的方式命名它们的头,但最好是简单地遵循惯例。服务器端(在您的示例中是Django应用程序)通过请求头部中发送的令牌对用户进行身份验证。它通过查找发送的令牌和用户之间的关系来实现这一点-通过存储令牌属于哪个用户的数据库中的表来实现。
https://stackoverflow.com/questions/38173488
复制相似问题