单点登录(SingleSignOn),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
通常情况下运维内控审计系统、4A系统或者都包含此项功能,目的是简化账号登录过程并保护账号和密码安全,对账号进行统一管理。
在此不考虑单点登录在多个应用下的登录问题,讨论其安全问题。
每个应用有一个域名,根据这个域名去申请apikey和apisecret,其中apikey我认为可以暴露,通过前端链接到authorize,带上apikey和redirect_uri,登录成功后就可以获得一个code并且返回到该uri,后端再通过这个code和apikey,apisecret去authorize获取这个用户的信息,并且拿到一个token,然后把这个用户存入session即可。
这样做可以保证使用apisecret的时候是在后端,不会被暴露,而且整个登录流程除了开始的链接到认证,和后面通过获得code再去链接到认证获取用户的token,其中所有的用户登录,用户认证都是在authorize完成的,这可以保证某一个应用获取不到用户的账号密码,只能获取到用户的基本信息,而且是可以暴露的一些基本信息,所以可以说是比较安全的。