客户身份(CIAM)

概述

微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,具有出色的使用体验。

当前您的企业是否拥有或者准备申请企业的微信小程序?

竹云IDaaS提供了相应的openAPI,您可以调用各种接口来实现通过小程序注册登录企业应用系统等功能。

# 准备工作

正式调用各类接口前,请确保企业管理员已完成以下操作:

  1. 已在微信公众平台注册小程序并获取AppID和AppSecret参数,详细信息请参考配置微信认证源中的注册小程序相关内容。
  2. 已在IDaaS企业中心平台自建企业应用,并为该应用配置了登录场景为小程序授权登录的微信认证源,详细信息请参考配置微信认证源中的配置认证源相关内容。
  3. 已在IDaaS企业中心平台为自建企业应用配置了微信小程序授权登录的认证方式,详细信息请参考配置微信小程序授权登录

# 登录场景

# 小程序登录

  1. 当用户打开小程序时,小程序会向用户展示登录按钮,用户点击登录按钮后,小程序会向微信服务器发送登录请求(wx.login())。微信服务器接收到登录请求后,会验证小程序的身份和合法性。如果小程序通过验证,微信服务器会生成一个临时的登录凭证(code)。

code有效时间仅为5分钟,如果5分钟内小程序的后台不拿着这个临时身份证来微信后台服务器换取微信用户id的话,那么这个身份证就会被作废,需要再调用wx.login重新生成登录凭证。

  1. 在wx.login的success回调中拿到微信登录凭证,紧接着会通过wx.request把code传到IDaaS,调用接口微信小程序登录,为了后续可以换取微信用户身份id。

  2. IDaaS使用临时登录凭证(code)向微信服务器发送请求,以获取用户的唯一标识(openid)和会话密钥(session_key)。

  3. 此时IDaaS通过code到微信服务器获取微信侧的用户身份openid查询IDaaS用户库。

  4. 如果IDaaS用户库有用户与微信侧的用户身份openid存在对应关系,则IDaaS生成业务登录凭证id_token和session_token。

  5. 如果IDaaS用户库有用户与微信侧的用户身份openid不存在对应关系,则IDaaS返回状态码:status,提示小程序需要进行绑定用户

有了这个绑定信息,小程序在下次需要用户登录的时候通过wx.login()获取到code之后,可以拿到用户的微信身份openid,通过绑定信息就可以查出IDaaS侧的用户id,这样静默授权的登录方式显得非常便捷。

  1. IDaaS根据Status为SOCIAL_BIND(绑定IDaaS侧已存在用户)和USER_REGISTER(绑定IDaaS侧已存在用户或者不存在用户)调用绑定用户接口。

当Status为SOCIAL_BIND时: 绑定流程。选择以下一种方式绑定:
微信授权手机绑定用户;
其它手机绑定用户;
用户名和密码绑定用户
当Status为USER_REGISTER时: 绑定或注册流程。 选择以下一种方式绑定:
微信授权手机绑定或注册用户;
其它手机绑定或注册用户

  1. 绑定成功,则IDaaS生成业务登录凭证id_token和session_token。

  2. IDaaS生成业务登录凭证id_token之后,小程序通过根据id_token获取用户信息解析idtoken,获取用户信息。

小程序应保持id_token对应的用户身份信息,通过刷新session_token接口刷新id_token的有效期来保持登录,这样我们就不需要每次都重新获取code,省去了很多通信消耗。

# 小程序手机号登录

  1. 当用户打开小程序时,小程序会向用户展示手机号登录按钮,用户点击手机号登录按钮后,小程序会向微信服务器发送手机号快速验证(wx.getPhoneNumber())或手机号实时验证(wx.getRealtimePhoneNumber())。微信服务器接收到请求后,会验证小程序的身份和合法性。如果小程序通过验证,微信服务器会生成一个临时凭证(code)。

code有效时间仅为5分钟,如果5分钟内小程序的后台不拿着这个临时身份证来微信后台服务器换取微信手机号的话,那么这个身份证就会被作废,需要重新生成登录凭证。
手机号快速验证组件 (opens new window)手机号实时验证组件 (opens new window)的区别为: 手机号实时验证组件,在每次请求时,平台均会对用户选择的手机号进行实时验证; 手机号快速验证组件,平台会对号码进行验证,但不保证是实时验证。

  1. 从微信小程序拿到临时凭证code,紧接着会通过wx.request把code传到IDaaS,调用接口微信小程序手机号登录,为了后续可以换取微信用户身份id。

  2. IDaaS使用临时凭证(code)向微信服务器发送请求,以获取用户的手机号。

  3. 此时IDaaS通过code到微信服务器获取微信侧的用户手机号查询IDaaS用户库。

  4. 如果IDaaS用户库有用户手机号与微信侧的用户手机号相同,则IDaaS生成业务登录凭证id_token和session_token。

  5. IDaaS生成业务登录凭证id_token之后,小程序通过根据id_token获取用户信息解析idtoken,获取用户信息。

小程序应保持id_token对应的用户身份信息,通过刷新session_token接口刷新id_token的有效期来保持登录,这样我们就不需要每次都重新获取code,省去了很多通信消耗。