零信任:接入Authing进行身份认证

news/2024/5/19 15:33:56 标签: 网络, 物联网, 云计算, 边缘计算

在之前的的文章中我们提到我们自己开发了一个Apisix的认证插件来实现认证,但是实际过程当中,我们同样也希望支持使用Keycloak,Authing,okta这类统一身份认证。本文主要是说明我们如何使用Authing这个身份认证供应商来实现登录认证的。

交互流程

在这里插入图片描述

如图所示,途中包括了网关认证过程中涉及到的所有组件。

  • 客户在办公网/公有云/数据中心当中运行一个连接器,连接器本身作为网关的客户端,不监听任何端口。
  • Apisix网关是我们基于Apisix构建的一个七层网关,作为连接器的服务端,接收连接器的连接请求,同时也作为用户访问的流量入口,负责接收所有外部访问的流量,同时也运行着一个对接控制面的模块,专门与数据面进行rpc/http交互
  • 身份认证组件,也就是我们的auth组件,统一了身份认证功能,屏蔽其他认证组件像Authing,Keycloak的细节。无论使用何种认证方式,对于Apisix网关而言都是一致的,也就是很经典的没有什么是加一层中间件解决不了的思想

具体交互流程如下:

  • 用户通过浏览器访问Apisix网关
  • Apisix发现用户没有登录,会返回一个重定向请求,重定向到身份认证组件的一个接口
  • 身份认证组件获取这个应用的信息,主要是使用了哪种身份认证的方式
    • 如果使用的是我们自建的身份认证,那么会重定向到自建身份认证的登录地址
    • 如果使用的是第三方的身份认证,那么会重定向到第三方身份认证的登录地址
    • 通过这种方式,我们可以对apisix提供一个统一的登录地址,Apisix并不需要关注这个应用使用的是哪种登录方式
  • 用户的浏览器自动跳转到重定向地址,然后进行登录
  • 如果是比扬云自建的身份认证,登录之后会返回一次性code和state给浏览器,浏览器携带code和state跳转到用户希望访问的资源链接,Apisix收到请求之后,首先会根据code和state去查询token信息,并设置cookie,保证下次能查询到token信息
  • 如果是第三方身份认证信息,由于网站不是我们自己开发的,我们无法控制浏览器行为,因此在登录成功之后,会跳转到我们认证服务的一个接口,在接口处理当中继续走类似比扬云身份认证的登录逻辑,后续跟正常使用比扬云身份认证的流程是一致的

通过这种方式,我们就能够实现扩展性比较好的身份认证功能,如果后续需要新增其他身份认证,只需要在身份认证服务当中进行对接,不需要Apisix网关的任何修改,而这也符合我们对网关的要求——网关稳定了就一直保持着就行,不需要频繁更改。

详细操作

第一步:创建连接器

登录我们的控制台选择零信任网关下拉,点击连接器管理,点击新增按钮,填入名称和配置即可
在这里插入图片描述

连接器创建成功之后会生成一个唯一的授权码,这个授权码在第二步当中会用到。

第二步:运行连接器

在连接器下载菜单栏下选择对应平台的连接器程序,本次我使用的是一个linux amd64平台的连接器,然后执行
./connector_linux_amd64 -auth=第一步生成的授权码
运行成功之后刷新连接器信息就能看到连接器是否在线

第三步:新增Authing身份认证

在身份认证供应商菜单下,点击新增按钮,在弹出来的页面当中输入名称,厂商选择Authing,然后输入您在Authing平台当中创建的应用的APPID,AppSecret和认证地址,这里的信息和Authing控制台里面显示的都是一致的,只需要找到然后复制粘贴过来即可。
在这里插入图片描述

第四步:创建应用

在应用管理菜单栏下,点击新增,在完善弹出的页面。其中连接器选择下拉选择第一步当中创建的连接器,认证方式下拉选择Authing,其他的根据实际情况决定,比如我的应用IP是192.168.1.10,端口是80,协议是http
在这里插入图片描述

第五步:访问测试

配置成功之后就可以进行测试,通过在浏览器打开应用列表里面的接入地址。首次打开会跳转到Authing的登录页面,登录成功之后会跳转到你的内网应用的页面。

总结

在之前的文章中我们也提到了做身份认证并不是我们当前擅长的事,我们更愿意将身份认证的功能留给第三方,比如Authing,Keycloak,Authing的集成是一个新的探索,我们也在积极寻找合作机会,如果您对我们的产品感兴趣的话,可以登录我们的控制台进行免费使用。


http://www.niftyadmin.cn/n/1010345.html

相关文章

机器视觉(图像处理)入门金典之图像数字化及处理方法

图像的数字化 一般的图像(模拟图像)不能直接用计算机来处理,必须首先转化为数字图像 把模拟图像分割成一个个称为像素的小区域,每个像素的亮度或灰度值用一个整数表示 数字化的含义: 使模拟图像的灰度、亮度和色彩数据化 图像数字化的步骤: 两个步骤: 1、在空间坐标…

Verilog基础之十三、ROM实现

目录 一、前言 二、非IP核设计 2.1 工程设计文件读取初始化 2.2 测试代码 2.3 仿真结果 三、IP核创建ROM 3.1 IP核生成ROM 3.2 设计代码 3.3 测试代码 3.4 仿真结果 四、modelsim设置 4.1 模拟信号显示 4.2 信号范围显示设置 五、数据文件 一、前言 对于工程中的…

【数据库工具】 图文版介绍Xampp工具的使用实战

前言 有时候懒得安装数据库,就可以使用一些集成工具,比如XAMPP就是一个流行的软件包,便于搭建本地web环境,使用里面的mysql也是相当方便,今天我们就一起来看一下。 🏠个人主页:我是沐风晓月 &…

HBase(15):表结构设计之名称空间

1 说明 在一个项目中,需要使用HBase保存多张表,这些表会按照业务域来划分为了方便管理,不同的业务域以名称空间(namespace)来划分,这样管理起来会更加容易类似于Hive中的数据库,不同的数据库下可以放不同类…

#10048 「一本通 2.2 练习 4」Censoring(内附封面)

[USACO15FEB] Censoring S 题面翻译 Farmer John为他的奶牛们订阅了Good Hooveskeeping杂志,因此他们在谷仓等待挤奶期间,可以有足够的文章可供阅读。不幸的是,最新一期的文章包含一篇关于如何烹制完美牛排的不恰当的文章,FJ不愿…

解决前端数字精度丢失

解雇方案: 一: 可转成字符串 -- 如果是后端返回的数据 让他直接简单粗暴加个双引号,检测类型才是字符串 二: String配合BigInt “拿到后端给的number类型的id,明明拿着热乎的数据,直接String,转成字符串时&#xff0c…

自然语言处理从入门到应用——预训练模型总览:预训练模型存在的问题

分类目录:《自然语言处理从入门到应用》总目录 相关文章: 预训练模型总览:从宏观视角了解预训练模型 预训练模型总览:词嵌入的两大范式 预训练模型总览:两大任务类型 预训练模型总览:预训练模型的拓展 …

零基础小白暑假QT实训1

一.前言 今天就要开始暑假短学期的实训了,本来课堂也要求记笔记,这里我就开始分享我将来五天的学习过程吧。 二.QT安装过程 首先,提供一下我的链接: 本来上传到我的阿里云盘了的,结果压缩包不给分享,抱歉…