Coder Social home page Coder Social logo

topiam / eiam Goto Github PK

View Code? Open in Web Editor NEW
318.0 11.0 74.0 40.54 MB

EIAM(Employee Identity and Access Management Program)企业级开源IAM平台,实现用户全生命周期的管理、统一认证和单点登录、为数字身份安全赋能!

Home Page: https://eiam.topiam.cn

License: GNU Affero General Public License v3.0

Java 73.00% HTML 0.36% Dockerfile 0.12% JavaScript 0.09% TypeScript 26.39% Less 0.03%

eiam's Introduction


⭐️ 如果你喜欢 TOPIAM,请给它一个 Star,您的支持将是我们前行的动力。

项目介绍

TOPIAM 数字身份管控平台,简称:EIAM(Employee Identity and Access Management), 用于管理企业内员工账号、权限、身份认证、应用访问,帮助整合部署在本地或云端的内部办公系统、业务系统及三方 SaaS 系统的所有身份,实现一个账号打通所有应用的服务。

官网:https://topiam.cn

管理端演示:https://eiam-console.topiam.cn

用户端演示:https://eiam-portal.topiam.cn

付费服务支持或商务合作:

logo

核心特性

  • 提供统一组织信息管理,多维度建立对应关系,实现在一个平台对企业人员、组织架构、应用信息的高效统一管理。
  • 支持钉钉、飞书、企业微信等身份源集成能力,实现系统和企业OA平台数据联动,以用户为管理基点,结合入职、离职、调岗、兼职等人事事件,关联其相关应用权限变化而变化,保证应用访问权限的安全控制。
  • 支持多因素认证,行为验证码、社交认证,融合认证等机制,保证用户认证安全可靠。
  • 支持微信、钉钉、飞书QQ等社交认证集成,使企业具有快速纳入互联网化认证能力。
  • 支持 SAML2OAuth2OIDCCASJWT,表单代填等认证协议及机制,实现单点登录功能,预配置大量 SaaS 应用及传统应用模板,开箱即用。
  • 完善的安全审计,详尽记录每一次用户行为,使每一步操作有据可循,实时记录企业信息安全状况,精准识别企业异常访问和潜在威胁的源头。
  • 提供标准RESTAPISCIM2.0接口轻松完成机构用户同步,提供HTTPMQ事件通知,实现企业对于账号生命周期的精细化管理。

系统架构

功能描述

功能模块 功能项 功能描述
账户管理 组织与用户 组织与用户用于解决企业组织、用户等实体的管理问题。这些实体您可以直接在TOPIAM中进行维护,也可以通过配置身份源后,同步身份源的数据。
用户组管理 用户组是用户的集合,将具有相同职能的用户添加到一起,即形成用户组。将权限授权到用户组后,用户组内的用户都将继承该权限,因此,用户组十分适合用于批量授权。
身份源管理 支持企业以多种身份源途径同步用户和组织信息到系统,在高级配置中可以对导入的处理逻辑进行灵活配置 ,实现从多个数据源的汇聚为一个完整的用户目录,部分身份源还可以通过回调的方式支持实时同步。
认证管理 认证提供商 支持设置多种身份提供商,企业用户即可通过不同方式登录门户。系统默认的认证源为用户密码和短信快捷认证,您还可添加钉钉、微信、企业微信、QQ等作为认证源。
应用管理 OIDC协议应用 OIDC是OpenID Connect的简称,OIDC=(Identity, Authentication) + OAuth 2.0。它在OAuth2上构建了一个身份层,是一个基于OAuth2协议的身份认证标准协议。OIDC是一个协议族,提供很多的标准协议,包括Core核心协议和一些扩展协议。
JWT协议应用 JWT(JSON Web Token)是在网络应用环境声明的一种基于 JSON 的开放标准。TOPIAM 使用 JWT 进行分布式站点的单点登录 (SSO)。JWT 单点登录基于非对称加密,由 TOPIAM 将用户状态和信息使用私钥加密,传递给应用后,应用使用公钥解密并进行验证。使用场景非常广泛,集成简单。
表单代填应用 表单代填可以模拟用户在登录页输入用户名和密码,再通过表单提交的一种登录方式。应用的账号密码在 TOPIAM 中使用 AES256 加密算法本地加密存储。很多旧系统、不支持标准认证协议的系统或不支持改造的系统可以使用表单代填实现统一身份管理。表单中有图片验证码、CSRF token、动态参数的场景不适用。
应用分组 应用分组管理是一种将多个应用程序或功能按照一定的逻辑或相关性进行组织和管理的方法。通过应用分组,可以更有效地管理大量应用程序,提供更好的用户体验。
行为审计 用户行为 审计日志记录了所有平台用户进行的关键操作,以对某次改变提供充分的溯源数据。
管理员行为 审计日志记录了所有平台管理员进行的关键操作,以对某次改变提供充分的溯源数据。
安全设置 通用安全 支持通用安全配置,及安全防御策略。
密码策略 系统全局安全配置、如密码策略、会话策略。 在密码策略中可以设置相应的密码复杂度、相应的锁定解锁策略,还可以设置是否允许与历史密码重复等高级策略。同时,可以通过开启弱密码字典库来检查密码的安全强度。
系统管理员 系统管理员负责保证系统的安全性、稳定性和合规性。
系统设置 消息设置 消息服务设置包括邮件服务配置和短信服务配置。邮件服务配置是指将消息发送到指定的电子邮件地址,需要配置SMTP服务器地址、端口号、用户名、密码等信息。短信服务配置是指将消息以短信的形式发送到指定的手机号码,需要配置短信服务提供商的API接口地址、账号、密码等信息。
IP地理库 配置IP地理库根据访问者的IP地址迅速识别出其所在的地理位置。
存储配置 支持配置云存储服务,如阿里云、腾讯云、MinIO等。
系统监控 会话管理 会话管理可以查看所有当前仍然有效的会话列表,并且可以强制注销某个用户的会话。注销后,该用户凭证即刻失效,之后的所有操作都需要重新认证。

技术架构

安装部署

微信公众号

欢迎关注 TOPIAM 微信公众号,接收产品最新动态。

社区交流群

用户登记

如果您和您的公司或组织使用了 TOPIAM 企业身份管控平台 ,非常感谢您的支持与信任,请在此进行登记,您的回复将成为维护者、社区用户和观望者的信心来源。感谢支持 💖

我们会优先支持登记用户的需求及问题反馈。

登记信息仅用于推广本产品~

点击进行接入登记

  • 浙江智慧江能技术服务股份有限公司
  • 广东省印象华云数据有限公司
  • 宁波甬承电子科技有限公司
  • 山东爱特云翔信息技术有限公司
  • 北京中科生活服务有限公司
  • 四维世景北京(科技)有限公司
  • 抹香鲸跨境电子商务有限公司
  • 杭州天象聚合信息技术有限公司
  • 烟台派创软件有限公司
  • 四川小仙信息技术有限公司
  • 成都益新臣辉科技有限公司
  • 贵州南智云数字产业发展有限公司
  • 青岛南邮信息技术有限公司
  • 福州创汇科技有限公司
  • 杭州群核信息技术有限公司
  • 深圳市佳信捷智慧物联有限公司
  • 南京优达创信息技术有限公司
  • 西安恒德天云信息技术有限公司
  • 北京盛云致臻智能科技有限公司
  • 大连车联信息技术有限公司
  • 杭州叽咪文化传媒有限公司
  • 广州光点信息科技股份有限公司

版权声明

开源不代表免费,TOPIAM 遵循 AGPL-3.0 开源协议发布,并提供技术交流学习,但绝不允许修改后和衍生的代码做为闭源的商业软件发布和销售! 如果需要将本产品在本地进行任何附带商业化性质行为使用,请联系项目负责人进行商业授权,以遵守 AGPL 协议保证您的正常使用。

如果您需要将本产品进行二次开发、更改并进行任何附带商业化性质行为使用,请联系我们进行商业授权,以遵守 AGPL-3.0 协议保证您的正常使用。

目前在国内 GPL 协议具备合同特征,是一种民事法律行为 ,属于我国《合同法》调整的范围。 TOPIAM 项目团队保留诉讼权利。

相关案例:违反 GPL 协议赔偿 50 万,国内首例!

本项目采用 AGPL 开源协议(抄袭牟利索赔100万)。

使用必须遵守国家法律法规,不允许非法项目使用,后果自负。

参与贡献

我们强烈欢迎有兴趣的开发者参与到项目建设中来,同时欢迎大家对项目提出宝贵意见建议和功能需求,项目正在积极开发,欢迎 PR 👏。

强烈推荐阅读 《提问的智慧》《如何向开源社区提问题》《如何有效地报告 Bug》《如何向开源项目提交无法解答的问题》 ,更好的问题更容易获得帮助。

Star History

Star History Chart

FOSSA Status

FOSSA Status

License

license

eiam's People

Contributors

0xlau avatar 2308850421 avatar awen112 avatar bigseacoming avatar fossabot avatar hbnugeekcoder avatar kaychain avatar leshalv avatar luketzh avatar m-xlsea avatar qiaoqiao888 avatar removeif avatar yepingping avatar ylwind avatar youaremywind avatar yzyunzhang avatar zebmaster avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eiam's Issues

无法连接 es

#datasource
spring.datasource.url=jdbc:mysql://192.168.10.103:3308/eiam?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=root

#redis
spring.data.redis.host=192.168.10.103
spring.data.redis.password=redispwd

#elasticsearch
spring.elasticsearch.uris=http://localhost:9200
spring.elasticsearch.username=
spring.elasticsearch.password=

#springdoc
springdoc.swagger-ui.enabled=true

#rabbitmq
spring.rabbitmq.host=192.168.10.103
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
spring.rabbitmq.publisher-confirm-type=correlated
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.virtual-host=my_vhost
spring.rabbitmq.dynamic=true
spring.rabbitmq.listener.simple.acknowledge-mode=manual

server config

topiam.server.console-public-base-url=http://127.0.0.1:3016
topiam.server.portal-public-base-url=http://127.0.0.1:3016
topiam.server.openapi-public-base-url=http://127.0.0.1:3016
topiam.server.synchronizer-public-base-url=http://127.0.0.1:3016

image image

Cannot deserialize

image
2023-08-10 10:45:00.040 [ERROR] [] [] [] 82639 --  ng.support.TaskUtils$LoggingErrorHandler Line:95  :  Unexpected error occurred in scheduled task

org.springframework.data.redis.serializer.SerializationException: Cannot deserialize
	at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.deserialize(JdkSerializationRedisSerializer.java:84)
	at org.springframework.data.redis.serializer.SerializationUtils.deserializeValues(SerializationUtils.java:54)
	at org.springframework.data.redis.serializer.SerializationUtils.deserialize(SerializationUtils.java:62)
	at org.springframework.data.redis.core.AbstractOperations.deserializeValues(AbstractOperations.java:224)
	at org.springframework.data.redis.core.DefaultSetOperations.members(DefaultSetOperations.java:182)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.springframework.data.redis.core.BoundOperationsProxyFactory$BoundOperationsMethodInterceptor.doInvoke(BoundOperationsProxyFactory.java:183)
	at org.springframework.data.redis.core.BoundOperationsProxyFactory$BoundOperationsMethodInterceptor.invoke(BoundOperationsProxyFactory.java:153)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
	at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:72)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:244)
	at jdk.proxy2/jdk.proxy2.$Proxy294.members(Unknown Source)
	at org.springframework.session.data.redis.RedisSessionExpirationPolicy.cleanExpiredSessions(RedisSessionExpirationPolicy.java:132)
	at org.springframework.session.data.redis.RedisIndexedSessionRepository.cleanUpExpiredSessions(RedisIndexedSessionRepository.java:482)
	at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
	at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:96)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?
	at org.springframework.core.serializer.support.DeserializingConverter.convert(DeserializingConverter.java:80)
	at org.springframework.core.serializer.support.DeserializingConverter.convert(DeserializingConverter.java:37)
	at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.deserialize(JdkSerializationRedisSerializer.java:82)
	... 26 common frames omitted
Caused by: java.io.StreamCorruptedException: invalid stream header: 22657870
	at java.base/java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:958)
	at java.base/java.io.ObjectInputStream.<init>(ObjectInputStream.java:392)
	at org.springframework.core.ConfigurableObjectInputStream.<init>(ConfigurableObjectInputStream.java:65)
	at org.springframework.core.ConfigurableObjectInputStream.<init>(ConfigurableObjectInputStream.java:51)
	at org.springframework.core.serializer.DefaultDeserializer.deserialize(DefaultDeserializer.java:70)
	at org.springframework.core.serializer.support.DeserializingConverter.convert(DeserializingConverter.java:75)
	... 28 common frames omitted

局域网内其他人登录时报“数字签名校验错误”,但控制台提示接口返回200

本地启动console模块,启动成功

2023-08-09 14:21:07.086 [WARN ] [] [] [4aa7e5e2-ac50-379c-ed05-76e8194c4725] 8944 --  org.elasticsearch.client.RestClient      Line:72  :  request [HEAD http://localhost:9200/topiam-user] returned 1 warnings: [299 Elasticsearch-7.15.0-79d65f6e357953a5b3cbcc5e2c7c21073d89aa29 "Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See https://www.elastic.co/guide/en/elasticsearch/reference/7.15/security-minimal-setup.html to enable security."]
2023-08-09 14:21:07.090 [WARN ] [] [] [4aa7e5e2-ac50-379c-ed05-76e8194c4725] 8944 --  org.elasticsearch.client.RestClient      Line:72  :  request [POST http://localhost:9200/topiam-user/_search?scroll=60000ms&typed_keys=true&search_type=query_then_fetch] returned 1 warnings: [299 Elasticsearch-7.15.0-79d65f6e357953a5b3cbcc5e2c7c21073d89aa29 "Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See https://www.elastic.co/guide/en/elasticsearch/reference/7.15/security-minimal-setup.html to enable security."]
2023-08-09 14:21:07.094 [WARN ] [] [] [4aa7e5e2-ac50-379c-ed05-76e8194c4725] 8944 --  org.elasticsearch.client.RestClient      Line:72  :  request [POST http://localhost:9200/_search/scroll] returned 1 warnings: [299 Elasticsearch-7.15.0-79d65f6e357953a5b3cbcc5e2c7c21073d89aa29 "Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See https://www.elastic.co/guide/en/elasticsearch/reference/7.15/security-minimal-setup.html to enable security."]
2023-08-09 14:21:07.096 [WARN ] [] [] [4aa7e5e2-ac50-379c-ed05-76e8194c4725] 8944 --  org.elasticsearch.client.RestClient      Line:72  :  request [DELETE http://localhost:9200/_search/scroll] returned 1 warnings: [299 Elasticsearch-7.15.0-79d65f6e357953a5b3cbcc5e2c7c21073d89aa29 "Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See https://www.elastic.co/guide/en/elasticsearch/reference/7.15/security-minimal-setup.html to enable security."]
2023-08-09 14:21:07.099 [WARN ] [] [] [4aa7e5e2-ac50-379c-ed05-76e8194c4725] 8944 --  org.elasticsearch.client.RestClient      Line:72  :  request [POST http://localhost:9200/topiam-user/_refresh] returned 1 warnings: [299 Elasticsearch-7.15.0-79d65f6e357953a5b3cbcc5e2c7c21073d89aa29 "Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See https://www.elastic.co/guide/en/elasticsearch/reference/7.15/security-minimal-setup.html to enable security."]
2023-08-09 14:21:07.100 [INFO ] [] [] [4aa7e5e2-ac50-379c-ed05-76e8194c4725] 8944 --  opiam.employee.core.dynamic.UserSyncTask Line:88  :  同步用户数据到ES成功, 更新:[0], 删除:[0], 耗时:[0]s

但是同一局域网内其他人页面可以打开,但是点击登录时,console模块控制台显示正常
fce51d5b3fa2d5a2a072a0802e418d00
前端页面接口请求报:
image

建议集成ldap服务

建议集成ldap服务,大部分平台账号体系对接的都是ldap,例如gitlab,jira,yapi,禅道等

代码编译不过

I\eiam\eiam-core\src\main\java\cn\topiam\employee\core\security\task\UserUnlockTask.java:30:48
java: 找不到符号
符号: 类 QUserEntity
位置: 程序包 cn.topiam.employee.common.entity.account

从钉钉同步部门失败

org.springframework.dao.InvalidDataAccessApiUsageException: Argument [{"organization":{"targetId":"1140917802633834496"},"user":{"emailNotify":true,"enabled":true}}] of type [java.lang.String] did not match parameter type [cn.topiam.employee.common.entity.identitysource.config.StrategyConfig (n/a)]
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:371)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:234)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:135)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:244)
at jdk.proxy2/jdk.proxy2.$Proxy212.updateStrategyConfig(Unknown Source)
at jdk.internal.reflect.GeneratedMethodAccessor213.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.cache.interceptor.CacheInterceptor.lambda$invoke$0(CacheInterceptor.java:54)
at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:366)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:421)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:345)
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:64)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:244)
at jdk.proxy2/jdk.proxy2.$Proxy212.updateStrategyConfig(Unknown Source)
at jdk.internal.reflect.GeneratedMethodAccessor213.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:237)
at jdk.proxy2/jdk.proxy2.$Proxy236.updateStrategyConfig(Unknown Source)
at cn.topiam.employee.synchronizer.processor.DefaultIdentitySourceDeptPostProcessor.rootOrganizationHandler(DefaultIdentitySourceDeptPostProcessor.java:164)
at cn.topiam.employee.synchronizer.processor.DefaultIdentitySourceDeptPostProcessor.process(DefaultIdentitySourceDeptPostProcessor.java:114)
at cn.topiam.employee.identitysource.core.AbstractDefaultIdentitySource.sync(AbstractDefaultIdentitySource.java:77)
at cn.topiam.employee.synchronizer.task.IdentitySourceSyncTask.run(IdentitySourceSyncTask.java:72)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:96)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalArgumentException: Argument [{"organization":{"targetId":"1140917802633834496"},"user":{"emailNotify":true,"enabled":true}}] of type [java.lang.String] did not match parameter type [cn.topiam.employee.common.entity.identitysource.config.StrategyConfig (n/a)]
at org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:84)
at org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:31)
at org.hibernate.query.internal.QueryParameterBindingImpl.validate(QueryParameterBindingImpl.java:340)
at org.hibernate.query.internal.QueryParameterBindingImpl.setBindValue(QueryParameterBindingImpl.java:130)
at org.hibernate.query.spi.AbstractCommonQueryContract.setParameter(AbstractCommonQueryContract.java:825)
at org.hibernate.query.spi.AbstractSelectionQuery.setParameter(AbstractSelectionQuery.java:775)
at org.hibernate.query.sqm.internal.QuerySqmImpl.setParameter(QuerySqmImpl.java:1237)
at org.hibernate.query.sqm.internal.QuerySqmImpl.setParameter(QuerySqmImpl.java:129)
at org.springframework.data.jpa.repository.query.QueryParameterSetter$BindableQuery.setParameter(QueryParameterSetter.java:326)
at org.springframework.data.jpa.repository.query.QueryParameterSetter$NamedOrIndexedQueryParameterSetter.lambda$setParameter$4(QueryParameterSetter.java:117)
at org.springframework.data.jpa.repository.query.QueryParameterSetter$ErrorHandling$1.execute(QueryParameterSetter.java:140)
at org.springframework.data.jpa.repository.query.QueryParameterSetter$NamedOrIndexedQueryParameterSetter.setParameter(QueryParameterSetter.java:117)
at org.springframework.data.jpa.repository.query.ParameterBinder.bind(ParameterBinder.java:83)
at org.springframework.data.jpa.repository.query.ParameterBinder.bind(ParameterBinder.java:75)
at org.springframework.data.jpa.repository.query.ParameterBinder.bindAndPrepare(ParameterBinder.java:97)
at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.doCreateQuery(AbstractStringBasedJpaQuery.java:106)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:234)
at org.springframework.data.jpa.repository.query.JpaQueryExecution$ModifyingExecution.doExecute(JpaQueryExecution.java:266)
at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:92)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:148)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:136)
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:136)
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:120)
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:164)
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:143)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:72)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:391)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)
... 42 common frames omitted

类未提交

QUserHistoryPasswordEntity
QUserEntity
这两个类是否未提交?

缺失类 QUserHistoryPasswordEntity

from: cn.topiam.employee.core.security.password.manager.DefaultPasswordPolicyManager

缺失 import cn.topiam.employee.common.entity.account.QUserHistoryPasswordEntity;

用户登记 | User Registration

如果您和您的公司或组织使用了 TopIAM 企业身份管控平台 ,非常感谢您的支持与信任,请在此进行登记,您的回复将成为维护者、社区用户和观望者的信心来源。感谢支持 💖

我们会优先支持登记用户的需求及问题反馈

登记信息仅用于推广本产品~

项目缺少类

QUserHistoryPasswordEntity
QUserEntity
这两个类是否未提交?

类不存在

elam-console/cn.topiam.employee.console.converter.identitysource这几个文件报错

数据源管理

LCM 管理,上游从企业微信、钉钉、飞书,excel 等同步已有的组织架构数据数据,将数据同步至其他系统

Synchronizer启动报错

image

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springSecurityFilterChain' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: Failed to instantiate [jakarta.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception with message: Error creating bean with name 'scopedTarget.defaultSecurityFilterChain' defined in class path resource [cn/topiam/employee/synchronizer/configuration/SynchronizerSecurityConfiguration.class]: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'securityFilterChain' threw exception with message: This method cannot decide whether these patterns are Spring MVC patterns or not. If this endpoint is a Spring MVC endpoint, please use requestMatchers(MvcRequestMatcher); otherwise, please use requestMatchers(AntPathRequestMatcher).
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:659)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:493)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1332)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1162)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:313)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:942)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:436)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
at cn.topiam.employee.EiamSynchronizerApplication.main(EiamSynchronizerApplication.java:35)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [jakarta.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception with message: Error creating bean with name 'scopedTarget.defaultSecurityFilterChain' defined in class path resource [cn/topiam/employee/synchronizer/configuration/SynchronizerSecurityConfiguration.class]: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'securityFilterChain' threw exception with message: This method cannot decide whether these patterns are Spring MVC patterns or not. If this endpoint is a Spring MVC endpoint, please use requestMatchers(MvcRequestMatcher); otherwise, please use requestMatchers(AntPathRequestMatcher).
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:171)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:655)
... 21 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.defaultSecurityFilterChain' defined in class path resource [cn/topiam/employee/synchronizer/configuration/SynchronizerSecurityConfiguration.class]: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'securityFilterChain' threw exception with message: This method cannot decide whether these patterns are Spring MVC patterns or not. If this endpoint is a Spring MVC endpoint, please use requestMatchers(MvcRequestMatcher); otherwise, please use requestMatchers(AntPathRequestMatcher).
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:659)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:647)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1332)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1162)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$1(AbstractBeanFactory.java:365)
at org.springframework.cloud.context.scope.GenericScope$BeanLifecycleWrapper.getBean(GenericScope.java:375)
at org.springframework.cloud.context.scope.GenericScope.get(GenericScope.java:179)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:362)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.aop.target.SimpleBeanTargetSource.getTarget(SimpleBeanTargetSource.java:35)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:224)
at jdk.proxy2/jdk.proxy2.$Proxy148.getFilters(Unknown Source)
at org.springframework.security.config.annotation.web.builders.WebSecurity.getRequestMatcherPrivilegeEvaluatorsEntry(WebSecurity.java:339)
at org.springframework.security.config.annotation.web.builders.WebSecurity.performBuild(WebSecurity.java:300)
at org.springframework.security.config.annotation.web.builders.WebSecurity.performBuild(WebSecurity.java:90)
at org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder.doBuild(AbstractConfiguredSecurityBuilder.java:311)
at org.springframework.security.config.annotation.AbstractSecurityBuilder.build(AbstractSecurityBuilder.java:38)
at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain(WebSecurityConfiguration.java:121)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:139)
... 22 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.web.SecurityFilterChain]: Factory method 'securityFilterChain' threw exception with message: This method cannot decide whether these patterns are Spring MVC patterns or not. If this endpoint is a Spring MVC endpoint, please use requestMatchers(MvcRequestMatcher); otherwise, please use requestMatchers(AntPathRequestMatcher).
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:171)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:655)
... 46 common frames omitted
Caused by: java.lang.IllegalArgumentException: This method cannot decide whether these patterns are Spring MVC patterns or not. If this endpoint is a Spring MVC endpoint, please use requestMatchers(MvcRequestMatcher); otherwise, please use requestMatchers(AntPathRequestMatcher).
at org.springframework.util.Assert.isTrue(Assert.java:122)
at org.springframework.security.config.annotation.web.AbstractRequestMatcherRegistry.requestMatchers(AbstractRequestMatcherRegistry.java:204)
at org.springframework.security.config.annotation.web.AbstractRequestMatcherRegistry.requestMatchers(AbstractRequestMatcherRegistry.java:248)
at cn.topiam.employee.synchronizer.configuration.SynchronizerSecurityConfiguration.lambda$securityFilterChain$0(SynchronizerSecurityConfiguration.java:54)
at org.springframework.security.config.annotation.web.builders.HttpSecurity.authorizeHttpRequests(HttpSecurity.java:1466)
at cn.topiam.employee.synchronizer.configuration.SynchronizerSecurityConfiguration.securityFilterChain(SynchronizerSecurityConfiguration.java:54)
at cn.topiam.employee.synchronizer.configuration.SynchronizerSecurityConfiguration$$SpringCGLIB$$0.CGLIB$securityFilterChain$0()
at cn.topiam.employee.synchronizer.configuration.SynchronizerSecurityConfiguration$$SpringCGLIB$$2.invoke()
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
at cn.topiam.employee.synchronizer.configuration.SynchronizerSecurityConfiguration$$SpringCGLIB$$0.securityFilterChain()
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:139)
... 47 common frames omitted

Disconnected from the target VM, address: '127.0.0.1:54979', transport: 'socket'

Process finished with exit code 1

用户管理建议

1、新增用户属性自行添加(属性代码、现实名称、属性值、是否多值、是否现实、是否必填等),用户可以维护现实字段,且字段与ldap打通
2、用户批量管理(excel批量导入新用户,excel批量修改用户,excel批量删除用户,用户名新旧批量替换等)
3、用户组添加用户时增加其他用户属性字段
4、多用户绑定(相同的手机号或者身份证号用户自行判断为同一人,使用用户切换身份方式)

Docker-compose部署报错

部署环境:CentOS7.9安装 1Panel 面板(Ubuntu 22.04 也测试过)
过程:Git 到 /root 目录下,通过 1Panel 下的容器-编排-创建编排-路径选择/root/eiam/docker-compose-standalone.yml或者/root/eiam/docker-compose.yml均报错。
/root/eiam/docker-compose-standalone.yml拉取日志为:

 eiam-portal Pulling 
 eiam-console Pulling 
 eiam-openapi Pulling 
 eiam-synchronizer Pulling 
 eiam-console Warning 
 eiam-synchronizer Warning 
 eiam-openapi Warning 
 eiam-portal Warning 
#1 [eiam-synchronizer internal] load build definition from Dockerfile
#1 transferring dockerfile: 1.95kB done
#1 WARN: Empty continuation line found in: RUN sed -i 's/archive.ubuntu.com/cn.archive.ubuntu.com/g' /etc/apt/sources.list           && apt-get update           && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone           && apt-get install tzdata           && apt-get clean           && apt-get autoclean           && apt-get autoremove           && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* EXPOSE 1986
#1 DONE 0.0s

#2 [eiam-console internal] load .dockerignore
#2 transferring context: 2B done
#2 DONE 0.0s

#3 [eiam-synchronizer internal] load .dockerignore
#3 transferring context: 2B done
#3 DONE 0.0s

#4 [eiam-console internal] load build definition from Dockerfile
#4 transferring dockerfile: 1.94kB done
#4 WARN: Empty continuation line found in: RUN sed -i 's/archive.ubuntu.com/cn.archive.ubuntu.com/g' /etc/apt/sources.list           && apt-get update           && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone           && apt-get install tzdata           && apt-get clean           && apt-get autoclean           && apt-get autoremove           && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* EXPOSE 1898
#4 DONE 0.0s

#5 [eiam-portal internal] load .dockerignore
#5 transferring context: 2B done
#5 DONE 0.0s

#6 [eiam-portal internal] load build definition from Dockerfile
#6 transferring dockerfile: 1.94kB done
#6 WARN: Empty continuation line found in: RUN sed -i 's/archive.ubuntu.com/cn.archive.ubuntu.com/g' /etc/apt/sources.list           && apt-get update           && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone           && apt-get install tzdata           && apt-get clean           && apt-get autoclean           && apt-get autoremove           && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* EXPOSE 1989
#6 DONE 0.0s

#7 [eiam-openapi internal] load .dockerignore
#7 transferring context: 2B done
#7 DONE 0.0s

#8 [eiam-openapi internal] load build definition from Dockerfile
#8 transferring dockerfile: 1.94kB done
#8 WARN: Empty continuation line found in: RUN sed -i 's/archive.ubuntu.com/cn.archive.ubuntu.com/g' /etc/apt/sources.list           && apt-get update           && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone           && apt-get install tzdata           && apt-get clean           && apt-get autoclean           && apt-get autoremove           && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* EXPOSE 1988
#8 DONE 0.0s

#9 [eiam-synchronizer internal] load metadata for docker.io/azul/zulu-openjdk:17-jre
#9 DONE 2.2s

#10 [eiam-synchronizer build 1/4] FROM docker.io/azul/zulu-openjdk:17-jre@sha256:9a665888712b020ce3eaea966d92db97d3168b3808dd7a0f6e6620ebd967c60a
#10 DONE 0.0s

#11 [eiam-synchronizer build 2/4] WORKDIR /workspace/app
#11 CACHED

#12 [eiam-console internal] load build context
#12 transferring context: 68B 0.1s done
#12 DONE 0.1s

#13 [eiam-synchronizer internal] load build context
#13 transferring context: 68B 0.1s done
#13 DONE 0.1s

#14 [eiam-synchronizer stage-1 2/8] COPY docker/entrypoint.sh /
#14 CACHED

#15 [eiam-synchronizer stage-1 3/8] WORKDIR topiam
#15 CACHED

#16 [eiam-openapi internal] load build context
#16 transferring context: 68B 0.1s done
#16 DONE 0.1s

#17 [eiam-openapi stage-1 2/8] WORKDIR topiam
#17 CACHED

#18 [eiam-openapi stage-1 3/8] COPY docker/entrypoint.sh /
#18 CACHED

#19 [eiam-portal internal] load build context
#19 transferring context: 68B 0.1s done
#19 DONE 0.1s

#20 [eiam-openapi build 3/4] COPY eiam-openapi/target/topiam-employee-openapi-*.jar target/application.jar
#20 ERROR: lstat /var/lib/docker/tmp/buildkit-mount3910241979/eiam-openapi/target: no such file or directory

#21 [eiam-portal build 3/4] COPY eiam-portal/target/topiam-employee-portal-*.jar target/application.jar
#21 ERROR: lstat /var/lib/docker/tmp/buildkit-mount2795633630/eiam-portal/target: no such file or directory

#22 [eiam-console build 3/4] COPY eiam-console/target/topiam-employee-console-*.jar target/application.jar
#22 ERROR: lstat /var/lib/docker/tmp/buildkit-mount3206388296/eiam-console/target: no such file or directory

#23 [eiam-synchronizer build 3/4] COPY eiam-synchronizer/target/topiam-employee-synchronizer-*.jar target/application.jar
#23 ERROR: lstat /var/lib/docker/tmp/buildkit-mount860146889/eiam-synchronizer/target: no such file or directory
------
 > [eiam-openapi build 3/4] COPY eiam-openapi/target/topiam-employee-openapi-*.jar target/application.jar:
------
------
 > [eiam-synchronizer build 3/4] COPY eiam-synchronizer/target/topiam-employee-synchronizer-*.jar target/application.jar:
------
------
 > [eiam-portal build 3/4] COPY eiam-portal/target/topiam-employee-portal-*.jar target/application.jar:
------
------
 > [eiam-console build 3/4] COPY eiam-console/target/topiam-employee-console-*.jar target/application.jar:
------
failed to solve: lstat /var/lib/docker/tmp/buildkit-mount3910241979/eiam-openapi/target: no such file or directory
docker-compose up failed!]

/root/eiam/docker-compose.yml拉取日志为:

eiam-synchronizer Pulling 
eiam-console Pulling 
eiam-openapi Pulling 
eiam-portal Pulling 
eiam-synchronizer Warning 
eiam-openapi Warning 
eiam-console Warning 
eiam-portal Warning 
#1 [eiam-console internal] load .dockerignore
#1 transferring context: 2B done
#1 DONE 0.0s

#2 [eiam-console internal] load build definition from Dockerfile
#2 transferring dockerfile: 2B done
#2 DONE 0.0s

#3 [eiam-portal internal] load .dockerignore
#3 transferring context: 2B done
#3 DONE 0.0s

#4 [eiam-portal internal] load build definition from Dockerfile
#4 transferring dockerfile: 2B done
#4 DONE 0.0s
failed to solve: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount3284487838/Dockerfile: no such file or directory
docker-compose up failed!

麻烦帮看下是什么原因

missing class

eiam-common包缺失类QUserHistoryPasswordEntity,eiam-core包构建失败cn.topiam.employee.core.security.password.manager.DefaultPasswordPolicyManager#getHistoryPasswordValidator
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.