searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

一种RESTful架构中协调本地和远端授权的方法

2024-09-25 09:31:55
5
0

基于SONiC白盒系统的交换机组网中,采用mgmt-framework(管理框架)作为其核心管理组件之一,用来实现对交换机配置和状态的全面管理,该框架支持类思科风格的命令行,用来对交换机进行配置下发和配置显示,并且支持RESTful架构以及OpenAPI规范自生成REST服务器端和客户端代码,能够将下发的命令转换成REST请求并传给REST服务器,REST服务器收到请求并执行相关操作,并完成渲染显示。

管理框架mgmt-framework支持基于证书、密码、用户角色等认证,以及对应的授权,所以在用户进行命令下发时,REST服务器会对收到的REST请求进行身份认证和资源授权,通过认证和授权的REST请求才会被允许执行相应的操作(包括更新、删除、设置等)。在种情况下,如果交换机配置了远端服务器认证和授权(如TACACS+radius等)那么一旦采用远端用户进行登录时,在通过远端认证授权之后还会进行mgmt-framework内部REST服务器的本地授权操作,这与交换机原本的目的即将认证和授权操作完全交由远端服务器进行处理的初衷相矛盾,如果继续采用mgmt-framework的本地授权,会导致本地授权和远端授权相冲突,造成远端授权成功而本地授权失败从而不能进行配置操作、资源访问等现象。

基于如上背景和原因,本文提出了一种RESTful架构中协调本地和远端授权的方法,旨在用于解决在通用的RESTful架构中,远端授权和本地授权相冲突的问题,并提供REST客户端和REST服务端具体的实现流程和整体的实现方案。

SONiCmgmt-framework中实现RESTful本地授权和远端授权的协调过程大致可以分为以下几个过程:

1. 用户终端通过ssh或串口连接到SONiC系统设备上。

2. 配置SONiC bash下的AAA为认证功能,当用户配置了远端认证,则SONiC会将认证请求交由远端处理,如果通过认证则继续执行步骤3

3. 用户通过命令行将命令下发到REST客户端。

4. REST客户端获得原始的命令,将该命令通过AAA授权计账模块发送到远端服务器进行命令和资源授权。

5. 远端服务器进行授权,并将授权结果发送回SONiC管理框架中,AAA授权计账模块进行结果处理,如果授权失败且仅进行远端授权,则直接进行步骤910将结果返回到用户终端上。如果授权成功,或同时开启远端和本地授权,远端授权失败,则进入步骤6

6. REST客户端基于授权结果和AAA配置发送不同的HTTP请求到REST服务端,具体如下:

1)仅开启远端授权

授权失败直接将结果返回到终端,授权成功则直接下发正常的HTTP请求。

2)开启远端和本地授权

授权失败则在AAA授权计账模块设置客户端环境变量LOCAL_AUTHOR_CLIENTFAILED,并在REST客户端下发HTTP请求前检查该环境变量,如果存在则将HTTP请求的头部加上Remote-Local-Authorization字段,并设置为FAILED下发。

授权成功则直接下发正常的HTTP请求。

7. REST服务端基于AAA配置和收到的HTTP请求进行不同的授权处理流程,具体如下:

  1)在解析HTTP请求的处理过程中,检查HTTP头部是否含有Remote-Local-Authorization字段,如果有则配置服务端的环境变量LOCAL_AUTHOR_SERVERFAILED

  2)在REST客户端本地授权中,判断AAA配置,如果仅配置远端授权,则说明远端授权成功,直接通过。如果配置本地和远端授权,则判断是否含有上述环境变量,如果存在则继续执行本地授权,并删除该环境变量。如果不存在,则直接通过,执行后续的配置操作。

8. REST客户端将完成请求的结果返回到REST客户端。

9. 命令行界面将结果进行渲染。

10. SONiC将渲染结果显示输出给用户终端。

0条评论
0 / 1000
z****n
5文章数
0粉丝数
z****n
5 文章 | 0 粉丝
原创

一种RESTful架构中协调本地和远端授权的方法

2024-09-25 09:31:55
5
0

基于SONiC白盒系统的交换机组网中,采用mgmt-framework(管理框架)作为其核心管理组件之一,用来实现对交换机配置和状态的全面管理,该框架支持类思科风格的命令行,用来对交换机进行配置下发和配置显示,并且支持RESTful架构以及OpenAPI规范自生成REST服务器端和客户端代码,能够将下发的命令转换成REST请求并传给REST服务器,REST服务器收到请求并执行相关操作,并完成渲染显示。

管理框架mgmt-framework支持基于证书、密码、用户角色等认证,以及对应的授权,所以在用户进行命令下发时,REST服务器会对收到的REST请求进行身份认证和资源授权,通过认证和授权的REST请求才会被允许执行相应的操作(包括更新、删除、设置等)。在种情况下,如果交换机配置了远端服务器认证和授权(如TACACS+radius等)那么一旦采用远端用户进行登录时,在通过远端认证授权之后还会进行mgmt-framework内部REST服务器的本地授权操作,这与交换机原本的目的即将认证和授权操作完全交由远端服务器进行处理的初衷相矛盾,如果继续采用mgmt-framework的本地授权,会导致本地授权和远端授权相冲突,造成远端授权成功而本地授权失败从而不能进行配置操作、资源访问等现象。

基于如上背景和原因,本文提出了一种RESTful架构中协调本地和远端授权的方法,旨在用于解决在通用的RESTful架构中,远端授权和本地授权相冲突的问题,并提供REST客户端和REST服务端具体的实现流程和整体的实现方案。

SONiCmgmt-framework中实现RESTful本地授权和远端授权的协调过程大致可以分为以下几个过程:

1. 用户终端通过ssh或串口连接到SONiC系统设备上。

2. 配置SONiC bash下的AAA为认证功能,当用户配置了远端认证,则SONiC会将认证请求交由远端处理,如果通过认证则继续执行步骤3

3. 用户通过命令行将命令下发到REST客户端。

4. REST客户端获得原始的命令,将该命令通过AAA授权计账模块发送到远端服务器进行命令和资源授权。

5. 远端服务器进行授权,并将授权结果发送回SONiC管理框架中,AAA授权计账模块进行结果处理,如果授权失败且仅进行远端授权,则直接进行步骤910将结果返回到用户终端上。如果授权成功,或同时开启远端和本地授权,远端授权失败,则进入步骤6

6. REST客户端基于授权结果和AAA配置发送不同的HTTP请求到REST服务端,具体如下:

1)仅开启远端授权

授权失败直接将结果返回到终端,授权成功则直接下发正常的HTTP请求。

2)开启远端和本地授权

授权失败则在AAA授权计账模块设置客户端环境变量LOCAL_AUTHOR_CLIENTFAILED,并在REST客户端下发HTTP请求前检查该环境变量,如果存在则将HTTP请求的头部加上Remote-Local-Authorization字段,并设置为FAILED下发。

授权成功则直接下发正常的HTTP请求。

7. REST服务端基于AAA配置和收到的HTTP请求进行不同的授权处理流程,具体如下:

  1)在解析HTTP请求的处理过程中,检查HTTP头部是否含有Remote-Local-Authorization字段,如果有则配置服务端的环境变量LOCAL_AUTHOR_SERVERFAILED

  2)在REST客户端本地授权中,判断AAA配置,如果仅配置远端授权,则说明远端授权成功,直接通过。如果配置本地和远端授权,则判断是否含有上述环境变量,如果存在则继续执行本地授权,并删除该环境变量。如果不存在,则直接通过,执行后续的配置操作。

8. REST客户端将完成请求的结果返回到REST客户端。

9. 命令行界面将结果进行渲染。

10. SONiC将渲染结果显示输出给用户终端。

文章来自个人专栏
RESTful
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0