基于OAuth2.0实现的单点登录
教育号基于OAuth2.0标准为第三方应用提供为第三方应用提供统一登录认证能力,解决用户在使用不同应用时需要重复多次登录的问题。
应用根据产品形态和业务需求评估接入方式,接入完成后可以基于教育号的帐号体系实现用户登录认证。
OAuth2.0允许用户在不告知第三方自己的帐号密码情况下,通过授权方式,让第三方服务可以获取自己的资源信息。
详细的协议介绍,开发者可以参考RFC 6749
教育号登录接入流程
sequenceDiagram
participant user as 用户
participant app_client as 应用客户端
participant app_svr as 应用服务端
participant epaas_svr as 教育号服务端
user ->> app_client: 打开应用
app_client ->> app_svr: 检查用户登录状态
alt 应用侧登录态有效
app_svr -->> app_client: 应用侧业务流程
else 应用侧登录态无效
app_svr -->> app_client: [用户未登录]
app_client ->> epaas_svr: 用户登录
epaas_svr ->> epaas_svr: 校验REDIRECT_URI
alt 教育号侧登录态有效
epaas_svr -->> epaas_svr: 登录态有效
else 教育号侧登录态无效
epaas_svr -->> user: 重新登录验证
user ->> epaas_svr: 用户登录验证(多种验证方式)
end
epaas_svr -->> app_client: 登录成功(下发登录授权code)
app_client ->> app_svr: 提交code验证
app_svr ->> epaas_svr: 调用code换access_token接口
epaas_svr -->> app_svr: 返回access_token等信息
app_svr ->> epaas_svr: 带access_token查询用户信息
epaas_svr -->> app_svr: 返回用户基本信息
app_svr -->> app_client: 登录完成,下发登录态
end
说明:code换token为后台服务器之间的调用,不通过浏览器;为用户信息安全考虑,获取到的用户token仅在服务端使用,不可以下发到前端。