臭名昭著aTrust隔离计划1.臭名昭著aTrust隔离计划2.VPN原理与aTrust隔离网络实践3.docker-easyconnect到底做了什么4.TUN(tunnel-隧道-虚拟网卡)模式
基于Quartz搭建的个人博客1.Quartz个人博客使用教程2.使用 rsync 增量部署 Quartz 博客3.使用 GitHub Actions 自动部署 Quartz 博客5.域名绑定6.CDN加速Obsidian、双向链接与知识图谱
旅行
行程攻略青岛三日游行程攻略
前端
NginxNginx配置与反向代理入门
Nodenpm与npx的区别
中华财险-公司项目
对外接口文档
基础数据码表对外接口(仅支持rpc调用)业务码表对外接口应用主数据对外接口
基础运营查询版本更新日志详情消息中心对外接口站内信对外接口站内信模板配置手册
权限中心权限中心对外接口文档(最新)权限中心对外接口文档前端ACL-CORE FACADE依赖版本
审计中心审计中心对外接口文档audit-center-facade版本
审批中心工作流迁审批流现状工作流迁审批流API能力替换方案老审批流接口文档审批中心接口文档审批中心业务回调FAQ
账号中心内部系统对接单点登录内部系统对接认证中心三方网页应用登录授权账号中心对外接口文档前端账号中心RPC接口文档账户变更对外广播消息文档账户中心对外接口HRMS外部员工变更广播消息文档HRMS外部员工对外接口
组织员工岗位🔥机构映射SDK接口文档员工岗位变更通知说明组织机构管营一体概念与用法组织员工对外广播消息文档组织员工岗位对外接口文档组织员工岗位对外接口文档前端组织员工岗位数据模型组织员工主数据业务场景案例organization-facade版本
hrms(大型人力资源外包管理系统)
项目架构说明HRMS Maven模块与依赖说明
项目说明0.流程中心模块0.组织模块说明1.业务线模块2.计划模块3.项目模块4.协议模块5.供应商模块6.合约域模块7.外包人员模块*核心:外包人员生命周期
项目运维外包人员项目编制差异排查与修复2.HRMS相关问题排查4.修改externalId(externalId和accountId不一致)
需求-系分
1.内部转外包0723外包人员关联历史内部账号系分新增外包人员关联历史账号内容(紧急0723上线)需求
2.工作岗位0820工作岗位0820需求工作岗位0820需求-系分
3.用工模式调整0917内部人员转外包用工系统需求2内部人员转外包用工系统需求-系分
sso(账号中心-单点登录)
项目架构说明aboss-sso项目架构入门AOP统一日志打印链路Maven多模块项目高级知识OAuth2.0
项目说明1.SSO-OAuth2.0与IDaaS登录流程2.外部账号创建流水号并发问题分析
AI
使用说明
第三方插件&技能简介Archify使用与安装指南Ponytail使用指南
CodexCodex CLI与IDE区别及使用指南Codex Hook单独配置与提交通知Codex MCP安装与使用指南Codex第三方插件安装与使用指南
Agent开发1.LLM、Token、上下文窗口与模型参数2.大模型 API、请求参数与响应结构3.Spring AI ChatClient4.Prompt、System Prompt、Prompt 模板6.结构化输出、JSON Schema7.SSE 流式响应8.会话 ID、聊天记录、Redis9.超时、重试、限流、降级10.完成可运行聊天接口
GitGit常用命令与Obsidian推送排查
Java
面试题Java基础与集合面试题
AtomicInteger原子计数与并发安全ConcurrentHashMap并发安全与计数Java线程、线程池与Future
python
基础Python基础语法
HTTPXHRMS员工详情接口调用(Python HTTPX)

https://cic_irc.yuque.com/tyl581/ggwv9w/sxdb0g

概述

新一代内部系统的前端框架已经自动集成登录能力。

以下描述针对新一代后端服务如何获取当前登录账号信息。

关键术语

  • 认证:只会判断用户是否已经登录认证,不会做接口是否能被调用权限检查。
  • 认证加鉴权:需要在权限中心配置权限码,不仅会做登录认证,还会做接口是否有权限调用检查。

后端服务接入

后端提供的api接口需要在sofa的api-gateway上进行外部授权绑定,由于后端提供的接口协议可能是RPC或者REST(HTTP)协议,提供两种不同的接入方式。

RPC接入方式

认证

认证加鉴权

获取用户信息

/**
* 用户统一登陆信息
*/
String authData = RpcInvokeContext.getContext().getRequestBaggage( "authData");
LogUtils.logger().info("用户登录信息 authData : {}", authData);
if (StringUtils.isBlank(authData)) {
    return new LoginUserInfo();
}
LoginUserInfo loginUserInfo = new LoginUserInfo();
try {
    loginUserInfo = JSON.parseObject(authData, LoginUserInfo.class);
} catch (Exception e) {
    LogUtils.logger().error("解析用户登录信息异常", e);
}

REST接入方式

认证

认证加鉴权

获取用户信息

/**
* 用户统一登陆信息
*/
String authData =request.getHeader( "authData");
LogUtils.logger().info("用户登录信息 authData : {}", authData);
if (StringUtils.isBlank(authData)) {
    return new LoginUserInfo();
}
LoginUserInfo loginUserInfo = new LoginUserInfo();
try {
    loginUserInfo = JSON.parseObject(authData, LoginUserInfo.class);
} catch (Exception e) {
    LogUtils.logger().error("解析用户登录信息异常", e);
}

authData格式

/**
* 账户类型(0:内部账户,1:外部账户)
*/
private String accType;
/**
* 账号角色(1-普通用户,2-超管)
*/
private String accRole;
/**
* 账户Id
*/
public String accId;
/**
* 账户名称
*/
public String username;
/**
* 员工编号
*/
private String personNo;
/**
* 人员名称
*/
public String personName;
/**
* 授权码
*/
public String permissionCode;
/**
* 账户Id
*/
private String sub;

认证:获取用户信息,authData中不包含permissionCode

认证加鉴权:认证并判断用户是否有访该资源的权限,authData包含所有字段

personName是中文名,在http方式下获取的是经过url编码处理的,需要做解码处理URLDecoder.decode(personName, “UTF-8”)

用户信息查询

https://cic_irc.yuque.com/tyl581/ggwv9w/xhap0wi0mdbab9sa