一种基于第三方Key的Samba身份认证方法
2022-10-13常旭侯春雷
◆常旭 侯春雷
(北京计算机技术及应用研究所 北京 100854)
本文所要解决的技术问题在于提供一种基于第三方Key的Samba身份认证方法,以便解决Samba只支持用户名和口令的认证方式,以及由此引起的安全隐患问题。
为实现上述目的,本文提供了一种基于第三方Key的Samba身份认证方法,包括:Web认证代理模块、后台服务模块以及第三方USBKey设备。
1 设计原理
Web认证代理程序为本文的核心内容,它起到连接第三方USBKey设备和对Samba进行认证的作用。
Web认证代理程序安装在客户端,这里的客户端为PC桌面设备。Web认证代理程序工作流程如下:它会启动一个主线程,主线程会打开已经存储在配置文件中配置好的端口。主线程会一直监听该端口,只要有客户端的连接请求到来,它就用“连接处理”函数去处理连接请求。“连接处理”函数会进行一些预判,来决定是否允许该连接,主要拒绝因素是判定连接请求是否来自本客户端。如果允许,则调用“请求队列”函数并把处理工作交给它,“请求队列”函数也会进行预判,判断连接队列是否已满,如果满了就等待直到有位置容纳请求,如果没有空闲进程且进程数量没有达到最大阈值,就会启动一个新的工作进程去处理客户端的请求。
Web认证代理程序可以被嵌入到任意的上层应用里(客户端软件或Web应用服务)里,Web认证代理程序与上层应用间交互数据承载协议为HTTP,验证结果通过JSON编码返回给上层应用。Web认证代理程序对外提供GET和POST两种调用方式。以GET方式交互时,请求数据位于URL中,以POST方式交互时,请求数据由表单提交。
将第三方Key的驱动配置文件、动态库和智能卡服务布置完毕后,Web认证代理将Key的接口函数头文件加载完毕后,Web认证代理等待用户输入指令,当指令为“验证PIN码”时,Web认证代理模块接收到上层通过POST或者GET方式下发的PIN码后,Web认证代理模块通过动态库提供的“验证口令接口”进行代入认证,如果PIN码正确,而进行指令为“读取工号UID”的操作,当读取到KEY中的工号后,再根据POST或者GET接收到的Samba密码进行“Samba认证”认证,成功则认证成功,LINUX操作系统客户端直接将Samba用户目录挂载到本地,Windows操作系统客户端直接打开Samba用户目录。
2 系统实现
以下结合如下流程图(图1)和具体实施例进行详细描述。
图1 流程图
2.1 通过后台服务模块建立Samba用户
通过后台服务模块的管理界面为后台新建立一个验证本文的Samba用户,界面输入参数有用户工号(UID)和密码等。后台服务模块起辅助Web认证代理模块的作用。
后台服务模块内部相当于在操作系统中执行如下操作,以下为后台服务模块在本专利中的简易操作步骤:
(1)我们建立一个工号(UID)为1008的用户,密码为test的验证用户:
贵州省地处云贵高原,省内河流数量多,分布广,部分河流受气候影响较大,有其优异的地质地形地貌为我国水利工程的开发兴建提供了优越的地理条件。但是近年来,贵州省受降雨气候影响,接连出现大规模洪水洪涝灾害,为周围各县及下属村镇造成的巨大损失。2016年,贵州省省政府颁布了国发2号文件,针对贵州省水利工程建设施工问题提出的相应指导性建议和政策性方针,可以说贵州省水利资源相关建设,不仅具有地质气候和自然资源供给,更具有政府政策性保证[1]。
(2)建立分配给工号UID为1008的文件夹空间并限定只有1008可以使用。
(3)为Samba配置文件添加验证用户“1008”的简易验证配置。
2.2 进行Web认证代理模块USBKey的初始化
为Web认证代理模块加载第三方USBKey的“驱动”、“动态库”和“客户端接口”。Web认证代理模块支持所有标准key,此处选用的Key为通用标准key。以下为“Web认证代理模块”的初始化操作在本文的简易步骤:
(1)将第三方USBKey的驱动配置文件拷贝到配置目录下。
(2)将USBKey所带动态库拷贝到库目录下并且保证智能卡服务运行。
(3)将第三方USBKey “客户端接口说明”文档中接口添加到Web认证代理模块中
从第三方USBKey的“客户端接口说明”文档得出实现Web认证代理模块所需的最少接口有五个:
1)打开用户终端证书载体设备接口
2)关闭用户终端证书载体设备接口
3)验证口令接口
4)读取用户证书接口
5)获取用户身份信息接口
2.3 添加Web认证代理模块HTML表单验证函数
Web认证代理模块HTML表单验证函数模拟对外提供GET和POST两种调用方式。以GET方式交互时,请求数据位于URL中。以POST方式交互时,请求数据由表单提交。
(1)定义HTML字符串常量模拟HTML表单提交
验证PIN码
获取用户UID
(2)接收模拟HTML表单提交的数据
通过表单数据接收函数,可以将通过HTML表单提交的GET和POST数据存储到get_html_var函数的第三个参数中,将该参数代入到客户端接口中,可完成:
2.4 验证Web认证代理模块
首先执行打开设备函数,并将PIN码作为参数传给它,如果PIN码错误,则结束验证,然后调用读取用户证书接口函数,从用户终端证书载体设备中读取用户证书或CA证书,再调用获取用户身份信息接口,从而读出用户工号(UID),将用户输入的Samba用户密码和获取到的用户工号(UID)作为参数传到Samba标准用户名和密码认证的接口中,如果打开Samba共享文件夹成功,则认证成功,Linux操作系统客户端直接将Samba用户目录挂载到本地,Windows操作系统客户端直接打开Samba用户目录。
3 结束语
针对传统Samba安全性存在的弊端,提出了一种基于第三方Key的Samba身份认证方法,可以为安全NAS存储提供一定的参考价值。