下文分别介绍了同一产品内的扫码登录和第三方产品扫码登录的一种实现方案。
二、扫码登录设计方案
1.同一产品内扫码登录方案
什么是同一产品内的扫码登录:某个产品既有App端又有桌面H5端,用户可以使用App来扫描桌面H5端的登录二维码,经过App端授权后,桌面H5端实现自动登录。
当然这种情况中,本产品的App和H5桌面端的后台可能是两个分开的服务,这种情况下,由于两端的后台服务是互信的因此整体的流程没有变,两个后台服务端就是上图的“某产品后台服务”。
2.第三方产品扫码登录方案
这个和同一产品内的扫码登录的区别在于,三方产品扫码登录生成的二维码,去授权都是授权服务器完成的,授权服务器和三方产品并不认识,只是通过用户的授权这个桥梁建立起了关系,使得授权服务器给三方产品提供了用户信息。由于授权服务器“不认识”三方产品,这个三方产品只能主动的去调用授权服务器,而授权服务器不能去主动调用三方产品。也因此设计了一些额外步骤为了保障交易的安全,比如应用服务要生成一个state,这个state用于检查这个申请授权的动作是否是自己做的(而不是一个恶意的二维码,只是把重定向地址改成了这个三方应用