版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(10)申请公布号CN120090882AH04L67/54(2022.0(71)申请人杭州悦数科技有限公司地址310000浙江省杭州市余杭区创景路511-5号时代未来之城5幢2201室(72)发明人俞洪伟韩笑吴月叶小萌(74)专利代理机构杭州裕阳联合专利代理有限公司33289专利代理师顾晨(54)发明名称一种图数据库文档站点用户鉴权和钉钉通知的实现方法本发明公开了一种图数据库文档站点用户鉴权和钉钉通知的实现方法,属于计算机安全技术领域,包括:将0auth2认证模块集成到反向代理服务器中,并与身份认证服务对接,以将访问图数据库文档站点的外部请求重定向至身份认证服务进行用户认证;用户认证通过后,0auth2认证模块执行鉴权操作;身份认证服务实时捕获用户注册事件,当监听到注册事件时,提取注册事件对应的用户信息;根据用户信息填充预设的通知模板得到通知消息,并通过可配置的消息通知接口将通知消息推送给管理终端;反向代理服务器基于鉴权结果,动态控制用户对图数据库文档站点内容的访问权限。本申请可对图数据库文器客户端文档站点客户端事件监听器客户端文档站点21.一种图数据库文档站点用户鉴权和钉钉通知的实现方法,其特征在于,包括以下步将0auth2认证模块集成到反向代理服务器中,并与身份认证服务对接,以将访问图数据库文档站点的外部请求重定向至所述身份认证服务进行用户认证;用户认证通过后,所述0auth2认证模块根据本地预先配置的鉴权规则和所述身份认证服务生成的访问令牌执行鉴权操作;利用所述身份认证服务的事件监听机制实时捕获用户注册事件,当监听到所述注册事件时,提取所述注册事件对应的用户信息;根据所述用户信息填充预设的通知模板得到通知消息,并通过可配置的消息通知接口将所述通知消息推送给管理终端;所述反向代理服务器基于所述0auth2认证模块返回的鉴权结果,动态控制用户对所述图数据库文档站点内容的访问权限。2.根据权利要求1所述的一种图数据库文档站点用户鉴权和钉钉通知的实现方法,其特征在于,所述将Oauth2认证模块集成到反向代理服务器中,并与身份认证服务对接,包配置Nginx服务器作为图数据库文档站点的反向代理服务器;将Oauth2认证模块接入所述Nginx服务器,并在所述0auth2认证模块中配置Keycloak3.根据权利要求2所述的一种图数据库文档站点用户鉴权和钉钉通知的实现方法,其当且仅当用户在所述Keycloak客户端中具有指定角色或属于特定组时,有权访问所述图数据库文档站点。4.根据权利要求3所述的一种图数据库文档站点用户鉴权和钉钉通知的实现方法,其特征在于,所述根据本地预先配置的鉴权规则和所述身份认证服务生成的访问令牌执行鉴解析所述身份认证服务生成的访问令牌得到用户角色和组信息,并将所述用户角色和组信息与所述鉴权规则进行匹配,若存在匹配成功项,则鉴权成功,访5.根据权利要求2所述的一种图数据库文档站点用户鉴权和钉钉通知的实现方法,其特征在于,所述用户注册事件包括用户自注册事件和管理员创建用户事件。6.根据权利要求5所述的一种图数据库文档站点用户鉴权和钉钉通知的实现方法,其从所述Keycloak客户端的UserModel对象中提取出用户ID、邮箱、用户名及姓名字7.根据权利要求1所述的一种图数据库文档站点用户鉴权和钉钉通知的实现方法,其特征在于,所述可配置的消息通知接口包括钉钉机器人Webhook接口。8.根据权利要求7所述的一种图数据库文档站点用户鉴权和钉钉通知的实现方法,其特征在于,在通过可配置的消息通知接口将所述通知消息推送给管理终端之后还包括:接收钉钉的响应,并根据钉钉响应中包含的状态码和响应体验证Webhook通知是否成在日志中记录通知结果,失败时触发告警并保留异常堆栈信息。39.根据权利要求2所述的一种图数据库文档站点用户鉴权和钉钉通知的实现方法,其特征在于,所述基于所述0auth2认证模块返回的鉴权结果,动态控制用户对所述图数据库若鉴权成功,则将所述外部请求转发到所述图数据库文档站点,并在请求头部注入用户认证信息;若鉴权失败,则返回403错误并将所述外部请求重定向至所述0auth2认证模块。10.根据权利要求9所述的一种图数据库文档站点用户鉴权和钉钉通知的实现方法,其通过正则表达式匹配所述外部请求的路径,当请求的资源不存在或服务器端发生错误时,动态加载对应目录下的自定义错误页面;强制所述Nginx服务器返回给Keycloak客户端的响应均使用HTTPS协议,并注入自定义安全头部,所述自定义安全头部包括X-Frame-0ptions、X-XSS-Protection和X-Content-4一种图数据库文档站点用户鉴权和钉钉通知的实现方法技术领域[0001]本发明涉及计算机安全技术领域,尤其涉及一种图数据库文档站点用户鉴权和钉钉通知的实现方法。背景技术[0002]在现代信息系统中,用户注册功能是提升用户体验和增强系统管理效率的关键环节。为了确保新用户能够得到及时的服务和支持,企业和组织通常期望在用户完成注册流程后,能够立即通知相关工作人员或系统管理员,以便迅速响应并处理新用户的请求。[0003]传统方案中,企业通常需要独立开发用户认证(Auth)模块以实现访问控制,例如在图数据库文档站点的权限管理场景中,开发人员需构建完整的用户鉴权体系,导致开发周期延长及维护成本增加。为了解决这一问题,现有技术倾向于将成熟的第三方身份验证服务如Keycloak集成到图数据库文档站点中,通过Keycloak提供的标准化协议如0Auth2.0和OpenIDConnect,可快速实现用户统一认证,并将登录流程跳转至Keycloak服务端执[0004]然而,Keycloak虽提供了强大的用户管理和鉴权服务,其本身却不支持注册事件触发的通知机制,这意味着管理员无法实时获取新用户信息,导致用户审核、权限分配等后续操作存在延迟。此外,在国内企业环境中,钉钉作为主流协同办公平台,其消息推送接口具有高实时性与强兼容性,而Keycloak原生也并不支持与钉钉系统的深度集成。若在图数据库文档站点中独立开发注册通知模块,则需额外处理事件监听、消息队列、接口适配等组件,这不仅增加了系统架构的复杂性,还提升了运维的风险和难度。[0005]综上,虽然使用Keycloak进行用户身份验证与管理可以大幅减少开发工作量并提高系统安全性,但因缺乏对注册事件通知的支持及与国内常用工具如钉钉的直接集成能发明内容[0006]本发明的目的在于提供一种图数据库文档站点用户鉴权和钉钉通知的实现方法,以解决现有技术中客户注册图数据库文档站点用户后该系统不会将注册事件通知给管理员导致客户需求处理不及时的问题。[0007]为实现上述目的,本申请采用以下技术方案:[0008]本申请的一种图数据库文档站点用户鉴权和钉钉通知的实现方法,包括以下步[0009]将0auth2认证模块集成到反向代理服务器中,并与身份认证服务对接,以将访问图数据库文档站点的外部请求重定向至所述身份认证服务进行用户认证;[0010]用户认证通过后,所述0auth2认证模块根据本地预先配置的鉴权规则和所述身份认证服务生成的访问令牌执行鉴权操作;[0011]利用所述身份认证服务的事件监听机制实时捕获用户注册事件,当监听到所述注5册事件时,提取所述注册事件对应的用户信息;[0012]根据所述用户信息填充预设的通知模板得到通知消息,并通过可配置的消息通知接口将所述通知消息推送给管理终端;[0013]所述反向代理服务器基于所述0auth2认证模块返回的鉴权结果,动态控制用户对所述图数据库文档站点内容的访问权限。[0014]作为优选,所述将0auth2认证模块集成到反向代理服务器中,并与身份认证服务[0015]配置Nginx服务器作为图数据库文档站点的反向代理服务器;[0016]将0auth2认证模块接入所述Nginx服务器,并在所述0auth2认证模块中配置[0018]当且仅当用户在所述Keycloak客户端中具有指定角色或属于特定组时,有权访问所述图数据库文档站点。[0019]作为优选,所述根据本地预先配置的鉴权规则和所述身份认证服务生成的访问令[0020]解析所述身份认证服务生成的访问令牌得到用户角色和组信息,并将所述用户角色和组信息与所述鉴权规则进行匹配,若存在匹配成[0021]作为优选,所述用户注册事件包括用户自注册事件和管理员创建用户事件。[0023]从所述Keycloak客户端的UserModel对象中提取出用户ID、邮箱、用户名及姓名字段。[0024]作为优选,所述可配置的消息通知接口包括钉钉机器人Webhook接口。[0025]作为优选,在通过可配置的消息通知接口将所述通知消息推送给管理终端之后还[0026]接收钉钉的响应,并根据钉钉响应中包含的状态码和响应体验证Webhook通知是[0027]在日志中记录通知结果,失败时触发告警并保留异常堆栈信息。[0028]作为优选,所述基于所述0auth2认证模块返回的鉴权结果,动态控制用户对所述图数据库文档站点内容的访问权限,包括:[0029]若鉴权成功,则将所述外部请求转发到所述图数据库文档站点,并在请求头部注入用户认证信息;[0030]若鉴权失败,则返回403错误并将所述外部请求重定向至所述0auth2认证模块。[0032]通过正则表达式匹配所述外部请求的路径,当请求的资源不存在或服务器端发生错误时,动态加载对应目录下的自定义错误页面;[0034]本发明具有如下有益效果:6[0035]基于Nginx服务器、0auth2Proxy和Keycloak对图数据库文档站点进行服务搭建和对接,可对图数据库文档站点进行用户鉴权,同时,通过钉钉机器人Webhook来通知管理员用户注册事件,解决了现有方案中客户注册图数据库文档站点后系统不提示管理员的痛点,实现了对访问图数据库文档站点的外部用户的及时处理。附图说明[0036]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。[0037]图1是本申请实施例提供的一种图数据库文档站点用户鉴权和钉钉通知的实现方法的流程图;[0038]图2是本申请实施例提供的反向代理服务器集成方法的流程图;[0039]图3是本申请实施例提供的钉钉响应处理方法的流程图;[0040]图4是本申请实施例提供的访问权限动态控制方法的流程图。具体实施方式[0041]为使本申请技术方案更加清楚,以下结合附图及具体实施例对本发明做进一步详不必用于描述特定的顺序或先后次序,应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式,此外,术元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对[0042]一种图数据库文档站点用户鉴权和钉钉通知的实现方法,如图1所示,包括以下步[0043]S110、将0auth2认证模块集成到反向代理服务器中,并与身份认证服务对接,以将访问图数据库文档站点的外部请求重定向至身份认证服务进行用户认证;[0044]S120、用户认证通过后,0auth2认证模块根据本地预先配置的鉴权规则和身份认证服务生成的访问令牌执行鉴权操作;[0045]S130、利用身份认证服务的事件监听机制实时捕获用户注册事件,当监听到注册事件时,提取注册事件对应的用户信息;[0046]S140、根据用户信息填充预设的通知模板得到通知消息,并通过可配置的消息通知接口将通知消息推送给管理终端;[0047]S150、反向代理服务器基于0auth2认证模块返回的鉴权结果,动态控制用户对图数据库文档站点内容的访问权限。[0048]Oauth2认证模块通常指的是用于实现0Auth2.0协议的软件组件或服务,它允许第三方应用在不直接处理用户密码的情况下获取对用户资源的有限访问权限,其中,0Auth2.0协议定义了如何安全地授予第三方应用对用户资源的访问权限,而无需直接处理用户的凭据(如用户名和密码)。OAuth2认证模块可以是服务器端的一个组件,也可以是一个独立的服务,甚至是一系列库和工具,用于帮助开发者快速集成0Auth2认证功能到他们的应[0049]本实施例中应用的Oauth2认证模块为0auth2Proxy容器。0auth2Proxy容器是一个反向代理服务器,专门设计用来保护Web应用和服务免受未认证用户的访问。它通过支持多种OAuth2.0提供商(如GitHub、Google以及Keycloak等)来实现认证功能,并且可以在用户成功认证后将请求转发给后端服务。在本实施例中,0Auth2.0提供商为Keycloak,也就[0050]本实施例中是将0auth2Proxy容器集成到作为图数据库文档站点反向代理的Nginx服务器中,再与Keycloak建立连接来共同完成用户认证的。[0051]在一实施例中,如图2所示,将0auth2认证模块集成到反向代理服务器中,并与身[0052]S112、配置Nginx服务器作为图数据库文档站点的反向代理服务器;[0053]S114、将0auth2认证模块接入Nginx服务器,并在0auth2认证模块中配置Keycloak[0054]在将Oauth2Proxy容器集成到Nginx服务器中前,先通过Nginx服务器的配置文件将Nginx服务器设置为图数据库文档站点的反向代理服务器,同时配置反向代理规则,如指定Nginx服务器监听的地址为本地回环地址,监听端口号为3000,并限制只有来自本地主机()的请求可以访问文档站点,并指定文档站点的根目录为/var/www/时,Nginx服务器会在该目录下查找对应的文件,同时指定默认的索引文件为index.html,即当用户访问根目录时,Nginx服务器会优先查找并加载其中的index.html文件。[0055]然后在配置好的Nginx服务器中接入0auth2Proxy容器并与Keycloak对接,这里可以先在本地安装0auth2Proxy容器,根据本地系统可以自行选择是通过二进制文件还是Docker亦或是包管理器还或是配置文件(oauth2-proxy.cfg)进行安装,此为现有技术,在此不做赘述。也可以先在Keycloak系统中创建一个新的客户端auth-doc,包括填写客户端的基本信息,如客户端ID和密钥。接着,编辑用于部署oauth2proxy容器的配置文件,配置使用的镜像为quay.io/oauth2-proxy/oauth2-proxy:latest,容器名称为oauth2,并设置环境变量,这是0auth2Proxy容器的核心配置,用于定义其行为与外部系统的交互,包括指定对接的提供商为KeycloakOIDC即O容器负责将Nginx服务器重定向至其的外部请求再重定向至Keycloak的登录页面,配置在Keycloak中创建的客户端ID和密钥以及回调地址,此处的回调地址是指用户登录成功后外部请求的重定向地址,用户登录成功后,会将外部请求重定向至0auth2Proxy容器的登录页面进行鉴权,0auth2Proxy容器监听的HTTP地址和端口即后端服务等,此处需要确保Nginx服务器配置文件中设置的后端服务与其一致,还配置了一些命令参数,用于进一步定义0auth2Proxy容器的行为,也可以理解为配置鉴权规则,如允许访问文档站点的用户领域、客户端角色及群组等,在本实施例中,允许的领域(realm)为public,允许的客户端为auth-doc,允许的客户端角色为doc-user,允许的群组为/doc-viewer。最后,进行测试和验证,测试和验证均通过,则表明已成功将Oauth2Proxy容器集成到Nginx服务器中,并且建]8立了与Keycloak客户端的连接。从而可以确保只有经过身份验证的用户才能访问受保护的资源。[0056]此处需要说明的是,在Keycloak中,realm是一个独立的用户管理单元,可以为不同的应用或组织创建多个realms,比如public、internal或customer,每个realm可以有自己的用户数据库、身份验证流程、角色和权限管理。当配置0auth2Proxy容器时,指定允许的领域(realm)为public的作用是告诉0auth2Proxy容器只允许来自public这个realm的用户访问受保护的资源。[0057]全部配置完成后,当有申请访问图数据库文档站点的外部请求时,配置了Oauth2Proxy容器的Nginx服务器会拦截该外部请求,并检查请求中是否包含有效的会话Cookie,如果有,则直接进行鉴权操作,如果没有有效的会话Cookie,则将该外部请求重定向至Keycloak客户端的登录页面,请求发起者即用户在该页面输入其凭据即客户端ID和密钥,Keycloak验证用户提供的凭据是否正确,若验证通过,Keycloak将生成一个访问令牌,并将该访问令牌发送回Oauth2Proxy容器配置的回调地址,0auth2Proxy容器解析该访问令牌得到用户的详细信息如用户名、用户角色以及组等,再根据本地预先配置的鉴权操作例如允许的角色、组等以及获得的用户信息来执行鉴权操作,通过对用户访问权限进行把控,可推广性高。且当用户注册文档站点访问时,可跳转到Keycloak进行注册,访问和使用方便。[0058]在本实施例中,还通过Keycloak管理控制台的事件配置页面配置Keycloak可以监听用户注册事件,该注册事件包括用户自注册事件Event.REGISTER和管理员创建用户事件Keycloak的事件监听器捕获到注册事件时,就会根据该事件中userId获取对应的UserModel对象,并从中提取出用户信息,如用户ID、邮箱、用户名及用户姓名,再将这些用户信息填入预先设置的通知模板中,该模板为使用多行字符串定义的JSON模板,可通过formatted方法进行用户信息填充,其中,formatted方法是在Java15引入的一个新方法,其接受可变数量的参数,并将这些参数按照顺序替换到调用字符串中的占位符%s、%d等,特别适合与文本块一起使用,使得多行字符串的格式化变得更加容易和清晰。最后,通过钉钉机器人Webhook接口将通知消息发送给钉钉管理员。[0063]String[0064]//如果环境变量中没有设置,则尝试从系统属性中获取。[0066]url=System.getProperty("WEBHOOK_URL");[0068]//如果两者都没有设置,记录错误日志,提示用户未设置WEBHOOK_URL,并抛出运行时异常,终止程序执行,同时给出错误信息。9[0071]thrownewRuntimeException("WEB[0073]//返回获取到的URL。[0076]钉钉管理员在接收到通知消息后,会返回HTTP响应,根据该响应可验证Webhook通知是否成功。[0077]其中,实现监听用户自注册事件Event.REGISTE的代码示例如下:[0080]//接收一个Event类型的对象作为输入。[0082]//打印分隔符。[0083]log.debugf("New%sEvent",even[0084]//记录事件类型,方便调试时了解当前处理的是什么类型的事件;当前记录的是[0085]log.debugf("onEvent->%s",toString(event));[0086]//打印事件的详细信息,调用toString方法将事件对象转换为字符串形式。[0087]if(EventType.REGISTER.equals(event.getType())){[0088]//判断事件类型是否为REGISTER(用户自注册事件)。[0089]log.debug("ProcessingREGISTER[0090]//记录日志,表明开始处理用户自注册事件。[0091]event.getDetails().forE[0092]//遍历事件的详细信息(键值对),并逐条记录到日志中。[0093]RealmModelrealm=this.model.ge[0094]//根据事件中的realmId获取对应的RealmModel对象。[0095]UserModeluser=this.session.users().getUserById(realm,[0096]//根据事件中的userId获取对应的UserModel对象。[0097]WebhookResultresult[0098]//检查Webhook调用是否成功。[0099]if(result.Response:%s",user.getUsername(),result.getMe[0101]//如果成功,记录成功的日志,包括用户名和返回的消息。[0103]log.errorf("Webhookuser.getUsername(),result.getMessag[0107]log.debug("==[0109]实现监听管理员创建用户事件AdminEvent.CREATE的代码与实现监听用户自注册事件Event.REGISTE的代码本质相同,只是其处理的是AdminEvent.CREATE事件,对应的资源类型是USER,操作类型是CREATE(用户创建事件),同时,其获取和发送用户信息的方法也[0110]UserModeluser=this.session.users().getUserById(realm,adminEvent.getResourcePath().s[0111]//从资源路径中提取用户ID(假设资源路径格式为"users/{id}",则截取第6个字符之后的部分)。[0112]WebhookResultresult=sendUser[0113]//调用sendUserData方法发送用户数据到Webhook,并获取返回结果。[0114]在一实施例中,如图3所示,通过可配置的消息通知接口将通知消息推送给管理终端之后,一种图数据库文档站点用户鉴权和钉钉通知的实现方法,还包括:[0115]S210、接收钉钉的响应,并根据钉钉响应中包含的状态码和响应体验证Webhook通[0117]具体地,接收到钉钉管理员发送的HTTP响应后,检查响应的状态码是否在200-299功与否,结果对象中均包含状态码和响应数据,响应数据中也均包含errorcode字段,当请求成功时,errorcode字段为0,请求失败则errorcode字段为300005,300005为钉钉机器人发生错误时返回的内容。[0118]当用户注册了Keycloak账号时,可通过钉钉机器人Webhook实时通知管理员进行[0119]本实施例还在关键步骤如发送请求、接收响应中记录日志,便于调试和问题排查,如在捕获到网络相关异常即IOException如连接超时、DNS解析失败时,会记录错误日志并Thread.currentThread().in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 30825-2026热处理温度测量
- GB/T 42709.36-2026半导体器件微电子机械器件第36部分:MEMS压电薄膜的环境及介电耐压试验方法
- 2026二上数学说课获奖课件
- 2026北师大二下东南西北核心素养课件
- 六年制小学数学课本十册市公开课获奖课件省名师示范课获奖课件
- 部编版小学三年级上册语文 19 香港璀璨的明珠 教案
- 2026四下数学小数的意义性质原创课件
- 梅毒螺旋体抗体检测试剂盒(胶体金法)(CSZ2400492)
- 商业银行经营损益的核算
- 2026四下数学第一单元情境课件
- 临床带教方法及技巧
- 303智能化综采工作面作业规程
- 物料搬运安全培训
- JBT 14646-2023 低蠕变填充改性聚四氟乙烯垫片 (正式版)
- 餐厨废弃物处理记录表
- 有限空间4个专题系列折页
- 基因检测销售岗位职责
- 鼎捷ERP系统 -易飞9.0-产品配置管理
- GB/T 10322.1-2000铁矿石取样和制样方法
- 锂电池来料检验标准(新)
- 航天器用j30jh系列微型矩形电连接器
评论
0/150
提交评论