基于Django REST framework的几种认证方式比较

/ 0评 / 0

BasicAuthentication

在HTTP中,基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。

在发送之前是以用户名追加一个冒号然后串接上口令,并将得出的结果字符串再用Base64算法编码。例如,提供的用户名是Aladdin、口令是open sesame,则拼接后的结果就是Aladdin:open sesame,然后再将其用Base64编码,得到QWxhZGRpbjpvcGVuIHNlc2FtZQ==。最终将Base64编码的字符串发送出去,由接收者解码得到一个由冒号分隔的用户名和口令的字符串。

--摘自《维基百科》

这种方式因为几乎是通过明文发送的请求,推荐在http请求下不使用这种方式,而是使用https的方式来传输数据。

TokenAuthentication

This authentication scheme uses a simple token-based HTTP Authentication scheme. Token authentication is appropriate for client-server setups, such as native desktop and mobile clients.

如Django REST framework的文档中所说,这种方式比较适合的场景是本地应用和移动应用。通过在header中添加Authorization发送Token的方式进行身份认证。同样推荐开发者用https来传输数据。

SessionAuthentication

This authentication scheme uses Django's default session backend for authentication. Session authentication is appropriate for AJAX clients that are running in the same session context as your website.

开发者通常使用的认证方式就是session了,通过cookie与session配合实现用户的认证。

OAuthAuthentication

OAuth2Authentication

OAuth is an open standard for authorization. OAuth provides a method for clients to access server resources on behalf of a resource owner (such as a different client or an end-user). It also provides a process for end-users to authorize third-party access to their server resources without sharing their credentials (typically, a username and password pair), using user-agent redirections.

这种方式主要是用作开放平台的模式,能够有效地在帮助第三方开发者的前提下保护用户数据。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注