用户身份认证方式小结

因项目需要,对用户身份认证的方式进行了一番了解,作个小结。

http基本认证

客户端使用Base64算法编码用户名及密码后进行传输,服务端解码得到用户名和密码。

优点

基本认证方式简单,在安全的私有网络内可以采用。

缺点

以明文传输的密钥和口令很容易被拦截,安全性很差。

建议

一般不使用

 

http digest认证(摘要认证)

通过附加一些其它信息对用户名及密码采用md5生成摘要信息进行传输认证。

优点

比http基本认证更安全,使用http协议

缺点

安全选项是可选的,安全性可能会被降低;易于受到中间人攻击

建议

在无法实施https协议的情况下可以使用

 

client-cert认证(客户端证书认证)

通常使用X.509标准证书认证,需要使用SSL(Secure Sockets Layer 安全套接层)

优点

数据加密后传递,防止被中间人窃听,安全性较高

缺点

环境部署较复杂

建议

对数据保密性、安全性要求较高时,可以使用

 

Form认证

通过编写服务端及客户端程序,实现自定义方式验证用户身份,一般由客户端将用户名及密码加密后提交到服务端进行认证

优点

数据加密方式可定制,安全性较高

缺点

需要编写程序

建议

目前使用最多的一种认证方式

 

单点登录SSO

简介

单点登录(Single Sign On),简称为 SSO,主要用于在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

 

当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性。如果通过校验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。

优点

集中认证,一次登录即可访问多个应用系统

缺点

需要搭建中心身份认证服务器,应用系统需要做相应调整与认证服务器配合

建议

有多个应用系统时,应该使用

 

OAuth

简介

OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

 

OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。

 

使用OAuth进行认证和授权的过程如下所示:

1. 用户访问客户端的网站,想操作自己存放在服务提供方的资源。

2. 客户端向服务提供方请求一个临时令牌。

3. 服务提供方验证客户端的身份后,授予一个临时令牌。

4. 客户端获得临时令牌后,将用户引导至服务提供方的授权页面请求用户授权。在这个过程中将临时令牌和客户端的回调连接发送给服务提供方。

5. 用户在服务提供方的网页上输入用户名和密码,然后授权该客户端访问所请求的资源。

6. 授权成功后,服务提供方引导用户返回客户端的网页。

7. 客户端根据临时令牌从服务提供方那里获取访问令牌 。

8. 服务提供方根据临时令牌和用户的授权情况授予客户端访问令牌。

9. 客户端使用获取的访问令牌访问存放在服务提供方上的受保护的资源。

优点

安全,用户密钥不会提供给第三方

任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH

缺点

OAuth 1.0存在一些不足,OAuth 2.0进行了修正

建议

用户需要访问第三方服务时使用

  • 本文作者:飞尘
  • 版权声明:本站所有文章除特别声明外,均可转载,转载请注明出处!