目录
传送门
在前面二节,对oauth2有了一个初步概念。这里要讨论一下oauth2接入流程,虽然这个并不在协议规范中,但其实这一步是并不可少的。而且各大开放平台的实现也不尽相同!
现在就结合微信与阿里云来看下,具体的接入前准备流程是什么
阿里云IDaaS
什么是IDaaS
阿里云应用身份服务IDaaS(英文名:Alibaba Cloud Identity as a Service,简称IDaaS)是阿里云为企业用户提供的一套集中式身份、权限、应用管理服务,IDaaS支持多种产品,下面具体介绍产品信息。
更多的查看这里什么是IDaaS
oauth2模板
上面的IDaaS可以做个了解即可,在这个产品里面,阿里也用到了ouath2协议,实现单点登录。
场景:SP发起单点登录时序
上面这个流程其实跟微信第三方登录大致是一样的。这里有兴趣的可以通过上面的官网去仔细阅读一下。
言归正传,要使用IDaaS的这个功能,需要使用到OAuth2.0模板
OAuth2.0模板是IDaaS产品定义的出来的一种单点登录场景,即采用oauth2协议实现单点登录的客户端配置信息。如果按照这种模型设计,微信的第三方登录,其实可以映射为IDaaS的OAuth2.0模板的一种应用场景
模板内容
如果要申请一个oauth2.0模板,其实主要要关注几个字段
- GrantType : 选择authorization_code(授权码模式),一般都建议用这种模式
- Redirect URI : 填写需要使用OAuth2单点登录应用的URL,这个是需要每个业务系统单独开发的,用于接收code(授权码)
- 应用名称:业务系统的名称,可以自行定义
下面是一张应用了oauth2模板的测试截图
从上面可以发现,开放平台会为系统默认生成几个字段
- 应用ID:应用的唯一id
- client_id:客户端应用id,这个类似微信的appid(这个也是微信开放平台颁发的)
- client_secret:应用身份密钥,类似微信的secret
这一步完成之后,才会有前面提到的oauth2的获取授权码code及令牌token接口。
Request URI: https://{IDaaS_server}/oauth/token?grant_type=authorization_code&code={code}&client_id={client_id}&client_secret={client_secret}&redirect_uri={redirect_uri}
阿里与微信注册信息对比
通过一个表格来看一下,获取令牌接口,应用注册之后需要用到的信息。
阿里 | 微信 | |
授权码 | code | code |
grant_type | authorization_code | authorization_code |
应用ID | client_id | appid |
身份密钥 | client_secret | secret |
重定向 url | redirect_uri | redirect_uri |
发现没有,其实需要的信息及字段都是一致的,只不过是开放平台定义的字段名称有差别。
如何实现一个oauth2协议?
所以,如果是要实现一个oauth2协议,要怎么设计呢?
肯定是要设计一个应用注册,模型可以类似阿里的oauth2模板
在下一节,我们会实现一个简版的oauth2协议