统一身份认证
支持通过SPI扩展机制,接入三方统一身份认证系统。
2 分钟阅读
当集成基础能力无法满足客户需求时,平台提供SPI扩展机制,用户可以在不影响上层使用的前提下,通过手写客开代码,实现统一身份认证、免登、单点登录、移动 App 接入、接口鉴权、基础能力厂商通道扩展等能力,解决个性化集成需求。
下载帮助文档中对应功能 spi 示例的 demo 项目按需实现对应业务接口,并打包成 jar 包
将客开实现的 jar 包上传到私服或服务器本地, 配置到对应服务的配置中(nacos 或 yaml 文件) 配置完成后, 重启 spi jar包里实现的接口对应的项目即可
验证 nacos 中 public 或项目中是否存在以下配置, 如果不存在则添加,如果存在则忽略
# public 配置确认
seeyon:
# 开启 spi 动态扩展的私服配置, 用于从私服里拉取扩展 jar 包
dynamic:
loader:
type: maven # 固定值
maven:
releaseUrl: release库地址
snapshotUrl: snapshot库地址
username: 账号
password: 密码
对应项目中的 nacos 或 yaml 配置文件配置内容
# 对应服务配置
seeyon:
spi:
enable: true # 固定值 true
spi-plugins:
# 上传到私服里的扩展 jar 包的 GAV(groupId / artifactId / version)坐标。 maven: 开头
# 固定格式 maven: 开头, 冒号后面没有空格, - 后面一个英文空格
- maven:com.seeyon,xxx-xxx-xxx,x.y.z
注意:
spi-plugins的值:- maven:com.seeyon,xxx-xxx-xxx,x.y.z
, 短横杠 后面 1 个英文空格, 前面 6
个英文空格
maven:xxx.xxx,xx-xx-xx,x.y.z
整体字符串中间 没有空格
所有缩进,以 两个英文空格 为标准, 不要使用 TAB 缩进
配置内容都是在 英文输入法 下配置,不要使用中文输入法
扩展 jar 包如果依赖外部 jar 包,也要将外部 jar 包对应的坐标配置到 seeyon.spi.spi-plugins
下
对应服务 nacos 配置(Maven是有私服的,file是没有私服的)
# 对应服务配置
seeyon:
spi:
enable: true # 固定值 true
spi-plugins:
# 固定格式: file: 开头, 冒号后面没有空格, - 后面一个英文空格
- file:/data/xxx/xxx.jar
注意:
- file:/data/xxx/xxx.jar
, 短横杠 后面 1 个英文空格, 前面 6 个英文空格file:/data/xxx/xxx.jar
整体字符串中间 没有空格seeyon.spi.spi-plugins
下工具类位于对应项目 api 包中的 util 下, 主要提供 spi 扩展 jar 包里的类的实例化获取, spring 管理的 bean的获取、调用、nacos或yaml中的配置信息获取功能
其中 ctp-user-api jar 包中还包含 request 对象的获取功能
以 ctp-user-api 中的 CtpUserSpiUtils 为例
@CtpUserComment("spi 扩展包工具类,可以获取 bean 的实例,通过配置 key 获取 nacos 或 yaml 配置内容等")
public class CtpUserSpiUtils {
@CtpUserComment("获取指定类的单例实例")
public static <T> T getInstance(Class<T> clazz) {
}
@CtpUserComment("获取获取被 spring 管理的指定类别的 Bean 对象")
public static <T> T getBean(Class<T> clazz) {
}
@CtpUserComment("获取指定名称和类型的 Bean 对象, 获取被 spring 管理的 bean 的对象")
public static <T> T getBean(String beanName, Class<T> requiredType) {
}
@CtpUserComment("调用指定 Bean 的指定方法并返回结果, beanName 是主服务中的 bean,jar 包中想用时可以通过此方法调用")
public static <T> T invokeBean(String beanName, String methodName, Object... params) {
}
@CtpUserComment("通过 key 获取属性配置值, 属性配置可以是 yaml 文件也可以是 nacos 配置")
public static String getPropertyByName(String key) {
}
@CtpUserComment("获取 request 对象")
public static HttpServletRequest getRequest() {
}
}
方法说明:
排查:日志搜索SPIJar || 动态加载spi的插件 查看原因
tail -n 10000 xxx-info.log | grep -C 50 '日志搜索SPIJar'
举例如下
根据实际上传的版本来,比如此例中应该是
字符-及后面的空格等全部要求是英文才可以,配置手写重新敲一遍配置
支持通过SPI扩展机制,接入三方统一身份认证系统。
支持三方异构系统免登进入COP平台SPI扩展能力。不支持免登地址中携带自定义参数
支持三方异构系统免登进入COP平台SPI扩展能力。支持免登地址中携带自定义参数
支持通过SPI扩展机制,扩展集成应用免登中的单点登录模式。
支持通过SPI扩展机制,扩展移动插件(移动管理-移动插件)。
支持通过SPI扩展机制,扩展集成应用接口中的接口鉴权模式(集成应用-接口-安全认证)。
适用于COP平台已完成接入能力的通道扩展。如COP平台已接入短信服务,并已适配华为云通道、腾讯云通道。若系统使用中,需要使用阿里云或其他第三方通道,则可以通过SPI机制快速完成适配接