Tap4Fun统一认证

登录统一认证中心

认证流程

  1. 需要接入的子系统必须向统一认证系统管理员提供子系统接入信息: (子系统名称,回调URI,描述及维护人),管理员录入信息后会反馈一个子系统接入token.

  2. 子系统需要登录认证时(如发现没有用户session或其他需要用户登录的情况),将用户redirect到统一认证中心进行登录https://uac.pf.tap4fun.com/client_systems/login?token=TOKEN,这里的token就是从第一步获取的token.

  3. 如果用户在统一认证中心登录成功,则会被redirect到回调URI,这个回调URI就是第一步子系统注册时提供的"回调URI".并且,认证中心会在这个URI加上一个附加查询参数"ticket",子系统需要使用这个ticket来验证用户并获取用户邮箱地址.

  4. 子系统使用上一步获取的ticket和自己的token向认证中心发起验证,向认证中心发起一个POST请求(https://uac.pf.tap4fun.com/client_system/validate),如果是合法用户则返回邮箱地址,否则返回401 unauthorized.

举个"栗子"尝尝

Flow 077a439cc684c339df29452982bb689a48b2bc9bf89ea060f656102936fead33

介入认证流程有3个角色:

0. ERP系统注册到认证中心

ERP开发将如下信息提供给认证中心管理员:

    
name: ERP
description: tap4fun erp系统,balalala...
callback_uri: https://erp.tap4fun.com/authcallback
owner: ligoudan@nibirutech.com
    

管理员录入后,会分配给开发一个系统标识token,如:cc354db1-0946-4721-802d-28a7ddfeaae0

NOTE:该步骤仅需执行一次

1. 用户登录ERP

现在ERP系统已经开发完成,用户Jason现在要登录到ERP查看自己的涨薪情况. ERP发现Jason还没有登录,就把他redirect到

https://uac.pf.tap4fun.com/client_systems/login?token=cc354db1-0946-4721-802d-28a7ddfeaae0进行登录

2. 登录认证

认证中心使用google帐号进行登录,完成登录后把用户redirect回https://erp.tap4fun.com/authcallback?ticket=aaabbbccc,注意:为了保证安全性,ERP系统接到这个GET请求后必须校验请求头的Referer字段的域是否是uac.pf.tap4fun.com

3. 验证登录

ERP系统后端利用这个ticket到认证中心验证用户,POST https://uac.pf.tap4fun.com/client_systems/validate,POST请求的数据为

{ ticket: aaabbbccc, token: cc354db1-0946-4721-802d-28a7ddfeaae0 }

如果验证成功,则请求返回用户Jason的信息:{ email: jason@nibirutech.com, name: Jason }

认证中心自举

说了这么多,如果认证中心不能自举,那怎么可以?