一、第三方登录的定义:利用用户在第三方平台上已有的账号来快速完成自己应用的登录或者注册的功能。
二、第三方登录实现步骤
用户访问客户端的网站,想操作用户存放在服务提供方的资源。
客户端向服务提供方请求一个临时令牌。
服务提供方验证客户端的身份后,授予一个临时令牌。
客户端获得临时令牌后,将用户引导至服务提供方的授权页面请求用户授权。在这个过程中将临时令牌和客户端的回调连接发送给服务提供方。
用户在服务提供方的网页上输入用户名和密码,然后授权该客户端访问所请求的资源。
授权成功后,服务提供方引导用户返回客户端的网页,并返回已授权的临时凭证。
客户端根据已授权的临时令牌从服务提供方那里获取访问令牌。
服务提供方根据临时令牌和用户的授权情况授予客户端访问令牌。
客户端使用获取的访问令牌访问该用户存放在服务提供方上的受保护的资源。(客户端只能访问给予它授权的用户的资源信息)
原理图:(例举 TencentQQ)
三、session共享/cookie共享:
1、基于数据库的Session共享
2、基于文件的Session共享
3、基于内存的Session共享
会员整合
1、下载一个discuz/ucenter论坛。
2、配置ucenter中的配置文件,与iwebshop通信。
3、修改iwebshop中的配置信息。
4、完成整合。
oAuth服务器
1、什么是OAuth协议?
oAuth是一个开放的认证协议,让你可以在web或桌面程序中使用简单而标准的,安全的API认证。
2、原理
1)、服务提供商。2)、用户。3)、消费者。特点:a. 简单b. 安全c. 开放
3、OAuth认证和授权的过程
1)、用户访问第三方网站网站,想对用户存放在服务商的某些资源进行操作。
2)、第三方网站向服务商请求一个临时令牌。
3)、服务商验证第三方网站的身份后,授予一个临时令牌。
4)、第三方网站获得临时令牌后,将用户导向至服务商的授权页面请求用户授权,然后这个过程中将临时令牌和第三方网站的返回地址发送给服务商。
5)、用户在服务商的授权页面上输入自己的用户名和密码,授权第三方网站访问所相应的资源。
6)、授权成功后,服务商将用户导向第三方网站的返回地址。
7)、第三方网站根据临时令牌从服务商那里获取访问令牌。
8)、服务商根据令牌和用户的授权情况授予第三方网站访问令牌。
9)、第三方网站使用获取到的访问令牌访问存放在服务商的对应的用户资源。
4、OAuth2.0四种鉴权方式:
1)、授权码 (Authorization Code Grant)
2)、隐式授权 (Implicit Grant)
3)、资源所有者密码凭证许可 (Resource Owner Password Credentials Grant)
4)、受保护资源的客户端授权 (Client Credentials Grant)。
5、oAuth角色
1)、资源拥有者(resource owner)
2)、资源服务器(resource server)
3)、授权服务器(authorization server)
4)、客户端(client)
简单oAuth服务器搭建
a、从oauth官网下载oauth-php sdk包
b、在数据库建基础的三张表,oauth_client、oauth_code、oauth_token
c、通过sdk中自带的API实现自动添加回调地址的方法到oauth_client中。
d、分配一个oauth_client和一个oauth_secrete给第三方网站,获取oauth服务。
参考网址:http://www.ruanwenwu.cn/2015/12/oauth-server-and-client-install.html
注册
邮箱验证:
正则为/^\w+@\w+(.)\w+$/
它用了一个第三方SMTP的方式,它需要配置
发送邮件的地址:(邮箱号)
安全协议:如果是qq邮箱必须开启SSL协议。SMTP地址163为(smtp.163.com)qq为(smtp.qq.com)如果是163邮箱,需要申请163授权码,等等。
对称加密:对称加密算法的特点是加密使用的密钥和解密使用的密钥是相同的。也就是说,加密和解密都是使用的同一个密钥。因此对称加密算法要保证安全性的话,密钥自然要做好保密,只能让使用的人知道,不能对外公开。
实现:base64_encode([email protected]|用户id)验证邮箱时用户get接收的加密过的邮箱和id,通过base64_decode()解密后通过list函数将邮箱和id分开,通过邮箱和id查询 库是否对应。
非对称加密:在非对称加密算法中,有公钥和私钥两种密钥,其中,公钥是公开的,不需要保密,私钥由个人持有,必须妥善保管和注意保密。加密和解密使用两种不同的密钥, RSA,这是一种常见的,应用很广的非对称加密算法。
实现:一般用RSA实现非对称加密, 它的原理较为简单,我们假设有消息发送方A和消息接收方B,通过下面的几个步骤,我们就可以完成消息的加密传递:
消息发送方A在本地构建密钥对,公钥和私钥;
消息发送方A将产生的公钥发送给消息接收方B;
B向A发送数据时,通过公钥进行加密,A接收到数据后通过私钥进行解密,完成一次通信;
反之,A向B发送数据时,通过私钥对数据进行加密,B接收到数据后通过公钥进行解密。
如果要建立更安全的加密消息传递模型,需要消息发送方和消息接收方各构建一套密钥对,并分别将各自的公钥暴露给对方,在进行消息传递时,A通过B的公钥对数据加密,B接收到消息通过B的私钥进行解密,反之,B通过A的公钥进行加密,A接收到消息后通过A的私钥进行解密。详细介绍非对称加密网址 http://www.tuicool.com/articles/aIv2In
手机号验证:
正则为/^1[3,5,8,7]\d{9}$/
手机短信验证用了短信接口插件,它需要申请商户id 用户名 密码
为了防止短信炸弹运用了倒计时。Ip限制,发送人的短信条数限制