关于局域网的身份认证技术有哪些可行方案?

关于局域网的身份认证技术有哪些可行方案?,第1张

IEEE802LAN协议定义的局域网并不提供接入认证,只要用户能接入局域网控制 设备 (如LANS witch)就可以访问局域网中的设备或资源。这在早期企业网有线LAN应用环境下并不存在明显的安全隐患。但是随着移动办公及驻地网运营等应用的大规模发展,服务提供者需要对用户的接入进行控制和配置。尤其是WLAN的应用和LAN接入在电信网上大规模开展,有必 要对端口加以控制以实现用户级的接入控制,802lx就是IEEE为了解决基于端口的接入控制 (Port-Based Network Access Contro1) 而定义的一个标准。
基本原理 IEEE 8021X是根据用户ID或设备,对网络客户端(或端口)进行鉴权的标准。该流程被称为“端口级别的鉴权”。它采用RADIUS(远程认证拨号用户服务)方法,并将其划分为三个不同小组:请求方、认证方和授权服务器
8021X 标准应用于试图连接到端口或其它设备(如Cisco Catalyst交换机或Cisco Aironet系列接入点)(认证方)的终端设备和用户(请求方)。认证和授权都通过鉴权服务器(如Cisco Secure ACS)后端通信实现。IEEE 8021X提供自动用户身份识别,集中进行鉴权、密钥管理和LAN连接配置。 整个8021x 的实现设计三个部分,请求者系统、认证系统和认证服务器系统。
请求者系统 请求者是位于局域网链路一端的实体,由连接到该链路另一端的认证系统对其进行认证。请求者通常是支持8021x认证的用户终端设备,用户通过启动客户端软件发起8021x认证,后文的认证请求者和客户端二者表达相同含义。
认证系统 认证系统对连接到链路对端的认证请求者进行认证。认证系统通常为支持802 1x协议的网络设备,它为请求者提供服务端口,该端口可以是物理端口也可以 是逻辑端口,一般在用户接入设备 (如LAN Switch和AP) 上实现8021x认证。倎文的认证系统、认证点和接入设备三者表达相同含义。
认证服务器系统 认证服务器是为认证系统提供认证服务的实体,建议使用RADIUS服务器来实现认证服务器的认证和授权功能。
请求者和认证系统之间运行8021x定义的EAPO (Extensible Authentication Protocolover LAN)协议。当认证系统工作于中继方式时,认证系统与认证服务器之间也运行EAP协议,EAP帧中封装认证数据,将该协议承载在其它高层次协议中(如 RADIUS),以便穿越复杂的网络到达认证服务器;当认证系统工作于终结方式时,认证系统终结EAPoL消息,并转换为其它认证协议(如 RADIUS),传递用户认证信息给认证服务器系统。
认证系统每个物理端口内部包含有受控端口和非受控端口。非受控端口始终处于双向连通状态,主要用来传递EAPoL协议帧,可随时保证接收认证请求者发出的EAPoL认证报文;受控端口只有在认证通过的状态下才打开,用于传递网络资源和服务。
认证过程
(1) 客户端向接入设备发送一个EAPoL-Start报文,开始8021x认证接入;
(2) 接入设备向客户端发送EAP-Request/Identity报文,要求客户端将用户名送上来;
(3) 客户端回应一个EAP-Response/Identity给接入设备的请求,其中包括用户名;
(4) 接入设备将EAP-Response/Identity报文封装到RADIUS Access-Request报文中,发送给认证服务器;
(5) 认证服务器产生一个Challenge,通过接入设备将RADIUS Access-Challenge报文发送给客户端,其中包含有EAP-Request/MD5-Challenge;
(6) 接入设备通过EAP-Request/MD5-Challenge发送给客户端,要求客户端进行认证
(7) 客户端收到EAP-Request/MD5-Challenge报文后,将密码和Challenge做MD5算法后的Challenged-Pass-word,在EAP-Response/MD5-Challenge回应给接入设备
(8) 接入设备将Challenge,Challenged Password和用户名一起送到RADIUS服务器,由RADIUS服务器进行认证
(9)RADIUS服务器根据用户信息,做MD5算法,判断用户是否合法,然后回应认证成功/失败报文到接入设备。如果成功,携带协商参数,以及用户的相关业务属性给用户授权。如果认证失败,则流程到此结束;
(10) 如果认证通过,用户通过标准的DHCP协议 (可以是DHCP Relay) ,通过接入设备获取规划的IP地址;
(11) 如果认证通过,接入设备发起计费开始请求给RADIUS用户认证服务器;
(12)RADIUS用户认证服务器回应计费开始请求报文。用户上线完毕。

在原先dubbo+zookeeper项目中,web模块只暴露Restful接口,各服务模块只暴露duboo接口,此时用户登录后由web项目进行token的鉴权和验证,并通过dubbo的隐式传参将sessionID传递给dubbo服务模块, 拦截器再根据sessionID从Redis中获取用户信息设置到当前线程

然鹅,在springcloud中,各个微服务直接暴露的是restful接口,此时如何让各个微服务获取到当前用户信息呢?最佳的方式就是token了,token作为BS之间的会话标识(一般是原生随机token),同时也可以作为信息的载体传递一些自定义信息(jwt, 即Json web token)。

为了能更清楚的了解本文,需要对spring-security-oauth 及 jwt有一定了解,本文只关注用户信息传递这一块

认证服务器配置 AuthorizationServerConfigurerAdapter

自定义token转换器
CustomJwtAccessTokenConverter

此时按照固定格式访问授权服务器token接口获取token,如图,可以获取到jwt格式的token,并且额外信息nick_name也已经添加

直接解析jwt字符串可以获取到以下信息,即用户名和授权信息

只需要指定和授权服务器一模一样的token store 和token converter
在securiy的过滤器中 OAuth2AuthenticationProcessingFilter 会从token中获取相关信息进行鉴权
源码:

注意,资源服务器主要配置在
ResourceServerConfigurerAdapter

微服务获取jwttoken中的用户信息,两种方式,使用security上下文可以直接获取当前用户名和权限,另一种自定义拦截器获取额外信息。
这个就简单了,获取header头解析验证token
然后获取之前从授权服务器中的添加的 nick_name的额外信息放入线程变量

其中用户上下文类

启动拦截器注册webmvc配置类

在controller中获取用户信息如图

在默认的认证异常如图

假设我们做了全局异常处理,前端希望在token过期时做统一的登录跳转如何做?
实现 AuthenticationEntryPoint 接口重写 commence 方法即可
注意,直接抛出异常并不会走 @RestControllerAdvice , 因为在这里是response直接返回,并没有使用到Controller处理

此时返回我自定义的Response对象,如图

什么是 RADIUS 服务器
RADIUS 是一种用于在需要认证其链接的网络访问服务器(NAS)和共享认证服务器之间进行认证、授权和记帐信息的文档协议。
RADIUS 的关键功能部件为:
客户机/服务器体系结构 网络访问服务器(NAS)作为 RADIUS 客户机运行。客户机负责将订户信息传递至指定的 RADIUS 服务器,然后根据返回的响应进行 *** 作。
RADIUS 服务器负责接收订户的连接请求、认证订户,然后返回客户机所有必要的配置信息以将服务发送到订户。
RADIUS 服务器可以担当其它 RADIUS 服务器或者是其它种类的认证服务器的代理。
网络安全性:
通过使用加密的共享机密信息来认证客户机和 RADIUS 服务器间的事务。从不通过网络发送机密信息。此外,在客户机和 RADIUS 服务器间发送任何订户密码时,都要加密该密码。 灵活认证机制:
RADIUS 服务器可支持多种认证订户的方法。当订户提供订户名和原始密码时,RADIUS 可支持点对点协议(PPP)、密码认证协议(PAP)、提问握手认证协议(CHAP)以及其它认证机制。
可扩展协议:
所有事务都由变长的三元组“属性-长度-值”组成。可在不影响现有协议实现的情况下添加新属性值。
如何配置 RADIUS 服务器
在“ISA 服务器管理”的控制台树中,单击“常规”: 对于 ISA Server 2004 Enterprise Edition,依次展开“Microsoft Internet Security and Acceleration Server 2004”、“阵列”、“Array_Name”、“配置”,然后单击“常规”。 对于 ISA Server 2004 Standard Edition,依次展开“Microsoft Internet Security and Acceleration Server 2004”、“Server_Name”、“配置”,然后单击“常规”。 在详细信息窗格中,单击“定义 RADIUS 服务器”。 在“RADIUS 服务器”选项卡上,单击“添加”。 在“服务器名”中,键入要用于身份验证的 RADIUS 服务器的名称。 单击“更改”,然后在“新机密”中,键入要用于 ISA 服务器与 RADIUS 服务器之间的安全通讯的共享机密。必须在 ISA 服务器与 RADIUS 服务器上配置相同的共享机密,RADIUS 通讯才能成功。 在“端口”中,键入 RADIUS 服务器要对传入的 RADIUS 身份验证请求使用的用户数据报协议 (UDP)。默认值 1812 基于 RFC 2138。对于更早的 RADIUS 服务器,请将端口值设置为 1645。 在“超时(秒)”中,键入 ISA 服务器将尝试从 RADIUS 服务器获得响应的时间(秒),超过此时间之后,ISA 服务器将尝试另一台 RADIUS 服务器。 如果基于共享机密的消息验证程序与每个 RADIUS 消息一起发送,请选择“总是使用消息验证程序”。
注意:
要打开“ISA 服务器管理”,请单击“开始”,依次指向“所有程序”、“Microsoft ISA Server”,然后单击“ISA 服务器管理”。 当为 RADIUS 身份验证配置 ISA 服务器时,RADIUS 服务器的配置会应用于使用 RADIUS 身份验证的所有规则或网络对象。 共享机密用于验证 RADIUS 消息(Access-Request 消息除外)是否是配置了相同的共享机密且启用了 RADIUS 的设备发送的。 请务必更改 RADISU 服务器上的默认预共享密钥。 配置强共享密钥,并经常更改,以防止词典攻击。强共享机密是一串很长(超过 22 个字符)的随机字母、数字和标点符号。 如果选择“总是使用消息验证程序”,请确保 RADIUS 服务器能够接收并配置为接收消息验证程序。 对于 *** 客户端,可扩展的身份验证协议 (EAP) 消息始终是随同消息验证程序一起发送的。对于 Web 代理客户端,将仅使用密码身份验证协议 (PAP)。 如果 RADIUS 服务器运行了 Internet 身份验证服务 (IAS),并且为此服务器配置的 RADIUS 客户端选择了“请求必须包含消息验证程序属性”选项,则必须选择“总是使用消息验证程序”。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13415687.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-31
下一篇 2023-07-31

发表评论

登录后才能评论

评论列表(0条)

保存