【解决方案】如何做两个系统免登 - hippowc/hippowc.github.io GitHub Wiki

如何做系统间免登

场景:用户主要使用A系统,希望部分功能免登到B系统去做,如何实现?

主要问题:

  • A与B系统间账号的关联关系?
  • B系统登录态写入?
  • 如何安全的传输会员信息

方案参考

  • A系统有授权中心,提供授权页面,用户授权后,A回调B的url,同时携带账号信息
  • 因为url是明文,所以账号信息不能直接传入,通过一个token代表
  • B系统通过token,调用A系统获取账号信息的接口获得用户信息
  • B系统保存账号关系
  • 返回的response进行set-cookie,写入登录态

关键点

  • A系统只能通过页面跳转的方式到B系统,同时在url上要附带上用户信息,但是这个信息不能直接透传,通过token的方式
  • oauth中,这个token通常是一个auth code,需要根据这个code换取accesstoken,这一步需要appkey+secret来获取,用于保证accesstoken被已授权的appkey获取,所以code换token时,授权服务器会有一条 code+appkey的关系表,会校验换token的是否是当前的app
  • B系统获取用户信息的方式要通过安全的调用
  • B系统要提供一个页面用于写cookie