Shopify类跨境SaaS + Keycloak私有化完整身份架构(含平台运营者、商家、买家三层身份全方案)
一、三层完整身份主体定义
你的系统一共三类人群,之前只区分了商家、买家,补充顶层平台运营者:
- 平台运营者(我方内部员工)
平台超级管理员、招商、风控、平台客服、平台财务、运维;负责管理全平台所有商家、全局配置、店铺封禁、资金对账、身份体系配置,能跨所有店铺查看数据。 - 入驻商家租户(B端卖家)
开店卖家、店铺店长、店铺运营、店铺财务、店铺客服;仅能操作自己名下店铺,看不到其他商家数据。 - 终端C端买家(海外消费者)
各独立站下单客户,仅能访问自己下单店铺的会员、订单。
二、Keycloak 双Realm隔离架构(行业标准生产方案,完美区分三类人)
1. Realm 1:master(内置顶级域,仅存放平台运营人员)
作用:专门托管平台内部运营账号,和商家、买家完全物理隔离,是整个身份体系的管控层。
内部结构
1)用户池
全部是你公司内部员工:超管、风控、招商、平台客服、财务。
2)预设角色(平台内部权限)
platform_super_admin:超级管理员,可操作Keycloak所有配置、创建/删除商家租户、重置任意商家/买家账号、修改全局登录页、社交登录、风控策略。platform_risk:风控人员,仅查看全平台账号登录日志、异常登录、锁定违规账号,无配置权限。platform_support:平台客服,仅可查询商家账号、重置商家密码,不能修改全局身份配置。platform_finance:平台财务,仅读取商家身份基础信息,用于对账。
3)专属客户端
平台总运营中台backend.你的saas.com- 类型:Confidential 保密客户端;
- 登录地址:
https://auth.你的saas.com/master; - 权限:调用Keycloak Admin API,读写saas-main业务域所有租户、用户数据。
安全优势
- Master管理控制台仅内网/VPN访问,外网不可访问,防止外部篡改身份配置;
- 商家、买家全部在另一个独立Realm,业务域数据泄露不会波及平台管理员账号;
- 权限天然隔离:平台运营账号、商家账号分属两个域,不会出现权限越权。
2. Realm 2:saas-main(业务主域,存放商家+全部C端买家)
所有开店卖家、店铺子员工、海外消费者统一放在这个域,采用单Realm + Group多租户隔离 方案(适配海量中小跨境卖家)。
1)租户隔离逻辑
- 每一个入驻商家 = 独立Group,Group自定义属性存储
tenant_id=店铺唯一ID; - 商家下属员工,放入该商家子Group,并分配店铺角色;
- 所有C端买家统一归类到customer公共分组,用户属性绑定对应
tenant_id标记所属店铺。
2)saas-main内两套客户端
客户端A:商家店铺后台 admin.*.store.com
- 类型:Confidential;
- 适用人群:店铺店长、运营、客服、财务;
- 内置店铺角色:shop_owner、shop_operator、shop_customer_service、shop_finance;
- 权限约束:JWT令牌携带tenant_id,业务后端校验只能访问自身店铺数据。
客户端B:买家前台商城 *.store.com
- 类型:Public;
- 适用人群:海外终端消费者;
- 开启Google/Facebook/Apple/PayPal海外社交快捷登录;
- 扩展用户字段:收货地址、国家、VAT税号、手机号,适配跨境合规。
三、三类用户完整登录流程区分
1. 我方平台运营人员登录总后台
- 访问
backend.你的saas.com; - 跳转认证地址
https://auth.你的saas.com/master; - 使用master域内部员工账号登录;
- 后端解析token内平台角色,获得全平台管理权限,可查看所有商家、店铺、买家。
2. 入驻商家登录店铺后台
- 访问
admin.商家店铺域名.com; - 跳转认证地址
https://auth.你的saas.com/saas-main; - 账号归属saas-main域,绑定对应商家Group;
- 后端读取token中的tenant_id,仅展示该商家自有店铺数据,隔离其他店铺。
3. 海外买家访问独立站商城
- 访问
商家独立站域名.com; - 跳转
https://auth.你的saas.com/saas-main; - 邮箱密码/社交账号登录,用户属性绑定对应店铺tenant_id;
- 仅能查看本店订单、会员信息,无法跨店铺登录。
四、跨Realm管理:平台运营如何管控saas-main里的商家/买家
master域的平台账号默认无法读取saas-main域数据,需要两步配置实现平台管控:
- 在saas-main域创建一个服务账号,开放用户查询、分组管理、账号重置权限;
- 平台中台通过服务账号调用Keycloak Admin API,实现:
- 新商家入驻自动创建Group;
- 商家账号解锁、密码重置;
- 批量查询买家登录日志,风控识别异常访问;
- 封禁违规商家店铺下全部账号。
五、补充备选方案(不推荐中小SaaS,仅大型客户使用)
如果不希望使用master域存放运营人员,也可以把平台运营人员也放进saas-main,单独创建顶层platform_admin分组区分:
- 缺点:平台管理员、商家、买家同域,隔离性弱;一旦业务域权限配置失误,存在商家越权查看平台后台的风险;
- 适用场景:超小规模内部团队、无严格数据隔离合规要求。
六、整套架构核心总结
- 平台运营者:单独存放于系统内置master Realm,作为顶层管控账号,隔离所有业务用户;
- 商家、C端买家:统一放在saas-main业务Realm,依靠Group+tenant_id做多租户数据隔离;
- 登录入口完全区分:平台员工走/master路径,商家和买家走/saas-main路径;
- 权限分层清晰:平台运营可全局管控,商家仅自有店铺,买家仅自身会员数据,无越权风险;
- 适配跨境SaaS私有化部署,满足GDPR数据隔离、风控审计、多店铺批量开店场景。