【解决方案】如何做两个系统免登 - 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