登录认证
Pangea 提供的默认登录方式为 账号
+密码
,支持切换为SSO登录方式,需要参照本文档进行申请和操作,由于LDAP与SSO都需要提前进行申请才能正常使用,因此你还需要了解一下申请的注意事项。
如何申请SSO?
你需要提前准备好以下内容提供给SSO认证管理员
:
- 系统中文名称
- 系统英文简称
- 系统访问地址
- 回调地址(此处同系统访问地址)
其中系统访问地址及回调地址均为云平台前端路由地址。如下所示(以物流项目为例):
申请拿到的内容包含以下信息:
SSO_CLIENT_ID
SSO_CLIENT_SECRET
SSO_LOGIN_URL
SSO_ACCESSTOKEN_URL
SSO_USERINFO_URL
如何申请LDAP?
你需要提前准备好以下内容提供给LDAP认证管理员
:
- 系统名称
- 同步人员范围
- 人员属性
申请拿到的内容包含以下信息:
LDAP_ID
LDAP_APPSECRET
LDAP_TOKEN_URL
LDAP_USER_WEBSERVICES
如何引用?
组件的引用请参考对应组件的操作文档:
修改环境变量
你需要前往信云平台,调整环境变量
中的相关参数。
增加认证方式字段
最后一步,去sys_config表增加数据
sql
insert into sys_config (CONFIG_ID, CONFIG_NAME, CONFIG_KEY, CONFIG_VALUE, CONFIG_TYPE, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, REMARK, SYSTEM_NAME)
values (1234, '认证方式', 'auth.method', 'sso', 'N', null, '30-JUL-20 03.21.13.000000 PM', null, '24-NOV-20 05.04.20.330000 PM', '登录认证方式 可选参数值:sso、local', 'pangea');
认证方式切换
如果项目已经启动,可用如下方式修改登录方式(系统管理->基本信息):
注意
1、根据项目需要发布不同环境时,需要使用相应的前端打包命令。
- 开发环境 npm run build
- 测试环境 npm run buildtest
- 预发环境 npm run builduat
- 正式环境 npm run buildprod
2、测试环境中配置LDAP环境时需注意
- pangea-auth服务中的环境变量用于认证
- pangea-system服务中的环境变量用于查询LDAP人员,默认为正式LDAP环境,相关变量如下
LDAP_USER_APPSECRET_ID
LDAP_USER_APPSECRET_KEY
LDAP_WEB_SERVICE
LDAP_DEPT_APPSECRET_ID
LDAP_DEPT_APPSECRET_KEY
LDAP_DEPT_WEBSERVICE
常见问题
1.用户通过sso登录之后不同的场景对应的处理逻辑
用户首次登录(SYS_USER表中能否查询到该账号) | LDAP组织(SYS_ORGANIZATION表中能否查询到用户所在组织) | 处理逻辑 |
---|---|---|
✅ 首次登录 | 🚫 不存在 | 用户登录时查询ldap接口获取ldap侧数据,根据用户信息添加一条SYS_USER 表用户数据,同时创建默认角色、用户与默认角色的关联数据,根据从ldap侧获取的组织路径查询组织表中是否有该数据,如果没有通过分隔符\ 进行拆分如海信集团\IT部\xx项目组 可以拆分成海信集团 、海信集团\IT部 、海信集团\IT部\xx项目组 三种情况,然后再分别去查询数据库SYS_ORGANIZATION 表是否有FULL_NAME 的值匹配的数据,如果全部匹配不上,则逐级新增,并且最上级的parent_code 为LDAP |
✅ 首次登录 | ⚠️ 部分存在 | 用户登录时查询ldap接口获取ldap侧数据,根据用户信息添加一条SYS_USER 表用户数据,同时创建默认角色、用户与默认角色的关联数据,根据从ldap侧获取的组织路径查询组织表中是否有该数据,如果没有通过分隔符\ 进行拆分如海信集团\IT部\xx项目组 可以拆分成海信集团 、海信集团\IT部 、海信集团\IT部\xx项目组 三种情况,然后再分别去查询数据库SYS_ORGANIZATION 表是否有FULL_NAME 的值匹配的数据,只新增匹配不上的,同时添加用户与组织的关联关系,新增组织的parent_code 为可匹配的组织org_code |
✅ 首次登录 | ✅ 存在 | 用户登录时未能在SYS_USER 表中查询到用户信息,需要先查询ldap侧用户数据根据ldap侧返回的数据添加一条SYS_USER 数据,由于组织数据已经存在,只需要将用户与组织进行关联,同时为该用户创建默认角色即可 |
🚫 非首次登录 | 🚫 不存在 | 用户登录时能够在SYS_USER 表中查询到用户信息,却没有组织全路径信息时,根据用户名查询ldap接口获取到用户的组织路径,然后根据路径拆分后去数据库组织表查询,将拆分后没有匹配到的组织结构新增到SYS_ORGANIZATION 表中,同时添加用户与组织的关联关系,新增组织的parent_code 为可匹配的组织的org_code |
🚫 非首次登录 | ✅ 存在 | 用户登录时能够在SYS_USER 表中查询到用户信息,同时能够获取到组织全路径,这种场景较简单,根据用户名信息查询相应的数据包括组织角色等 返回即可 |