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

news2024/10/1 15:11:08

在之前的的文章中我们提到我们自己开发了一个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.coloradmin.cn/o/710788.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker安装达梦M8数据库,Jdbc客户端乱码解决方案

Docker安装达梦M8 下载镜像tar包:https://eco.dameng.com/download/ #导入镜像 docker load -i dm8_20220822_rev166351_x86_rh6_64_ctm.tar # 启动容器 docker run -d -p 5236:5236 --restartalways --name dm8 --privilegedtrue -e PAGE_SIZE16 -e LD_LIBRARY_…

管理者必修的7门课

在现代商业世界中,管理者需要具备各种技能和知识,以便有效地领导他们的团队,并使他们的组织成功地达到其目标。虽然管理是一门复杂的学科,但有一些核心课程对于所有管理者来说都是必学的。 在本文中,我们将探讨管理者…

Multi-sensor KIT 多传感器开发板

1.前言 经过一段时间的思考后,我决定设计一款能够兼容多个传感器的开发板。这个开发板由核心底板和扩展板组成,其中核心底板预留了多路的I2C、SPI、UART、ADC等接口,而扩展板则兼容了QMI8658A-EVB和CH101/201-EVB的支持。这个设计可以让我更…

redis-主从安装

解决问题 1.数据安全问题 2.高并发读问题 1.主节点和 redis-单节点安装一致 2.从节点 daemonize yes port 6379 bind 0.0.0.0 requirepass 123456 save 3600 1 300 100 60 10000dir /usr/local/redis dbfilename dump.rdb logfile redis.log pidfile redis.pidreplicaof 172.2…

【SCADA】测试KingIOServer连接ModbusTCP设备

哈喽,大家好,我是雷工! 今天测试KingIOServer连接ModbusTCP设备,下面记录测试过程。 一、ModbusTCP设备 利用ModbusSlave模拟Modbus从站设备。 1、打开ModbusSlave软件,点击菜单栏【Setup】—>【SlaveDefinition……

ESP32设备驱动-SCD40二氧化碳湿度和温度传感器驱动

SCD40二氧化碳湿度和温度传感器驱动 文章目录 SCD40二氧化碳湿度和温度传感器驱动1、SCD40介绍2、硬件准备3、软件准备4、驱动实现1、SCD40介绍 SCD4x 是 Sensirion 的下一代微型 CO2 传感器。 该传感器基于光声 NDIR 传感原理和 Sensirion 的专利 PASens 和 CMOSens 技术,以…

初学spring5(七)AOP就这么简单

学习回顾:初学spring5(六)静态/动态代理模式 一、什么是AOP? AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术…

什么是BFC?

BFC是什么东西? BFC 全称:Block Formatting Context, 名为块级格式化上下文。 W3C官方解释为:BFC是 Web 页面的可视 CSS 渲染的一部分,是块级盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。 通俗一…

如何自己创建一个工具项目并上传到npm上使用

第一步:npm官网注册一个自己的账号 第二步:在cmd窗口创建一个项目(这里我以vue3为例子) npm create vite 项目名 选择框架: 选择语言: 在项目中使用命令安装项目依赖: npm i 运行项目&#…

华为mpls vpn跨域C-1方案配置案例

R1: dis current-configuration [V200R003C00] snmp-agent local-engineid 800007DB03000000000000 snmp-agent clock timezone China-Standard-Time minus 08:00:00 ip vpn-instance vpn1 //添加vpn实例vpn1 ipv4-family route-distinguisher 1:1 //RD标签 vpn-target 100:1 …

如何用javascript 实现条形码和二维码

条形码和二维码 条形码和二维码都是一种用于存储信息的编码系统,它们可以被扫描设备或图像识别设备读取。 1. 条形码: 由一组垂直线条组成,线条的粗细和间距不同可以表示不同的数字或字符。通常用于商品标识和销售管理,以便在商…

Zigbee MAC地址通信中发送模块指定了接收模块MAC地址却发送不了数据包的解决办法

Zigbee MAC地址通信中发送模块指定了接收模块MAC地址却发送不了数据包的解决办法 事情缘由 在做MAC地址通信的实验中,我将程序分别下载进模块,组网成功后,发送模块终端按下按键,接收模块协调器什么反应也没有,上位机…

(模拟) 657. 机器人能否返回原点 ——【Leetcode每日一题】

❓ 657. 机器人能否返回原点 难度:简单 在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效…

STM32F4使用18B20温度传感器【串口显示、18B20传感器】

在物联网和嵌入式系统中,温度传感器是常用的传感器之一。18B20温度传感器是一种数字温度传感器,非常适合用于测量环境温度。 本篇博客将介绍如何使用正点原子团队的官方驱动代码读取18B20温度,并通过串口显示。 编写代码 首先,…

mac m1通过qemu和grub制作操作系统引导盘

文章目录 前言grub安装引导盘FAQ参考附录qemu安装ubuntuGRUB安装到回环设备吧啦吧啦... 前言 我电脑是mac m1芯片的,做了如下尝试,最终在第4种方式下成功: 开始用了parallels desktop安装了ubuntu 22版本的,因为本机是arm64芯片…

Linux学习-基础篇

Linux学习 学自尚硅谷武晟然老师,结合老师课堂内容和自己笔记所写博文。 文章目录 Linux学习基础篇桌面与终端文件系统一、文件系统和挂载点二、目录结构bin、sbinlib、lib64usrbootdevetchome、rootoptmedia、mntprocrunsrvsystmpvar Vim编辑器一、整体介绍和模式转…

GridView编辑更新时数据没有改变,总是原来的值

GridView编辑更新时数据没有改变,总是原来的值 猜测原因是:我在点击更新时又执行了page_load方法,又将数据库的值绑定到了gridview上,所以永远都是数据库的值 解决办法:判断页面是不是第一次加载。在page_load方法…

【论文笔记】FASTER SEGMENT ANYTHING:TOWARDS LIGHTWEIGHT SAM FOR MOBILE APPLICATIONS

前脚fast SAM刚发完,后脚mobile SAM就发了 ,之前的论文笔记中我一直就认为fast SAM其实应该算是yolo的扩展工作,和原生的SAM架构相去甚远,而且在简介上直接就对(gong)比(ji)了FastSA…

VS2022运行一闪而过的解决方案

1.问题情景 编写完程序后,尝试在VS中编译链接运行(使用快捷键F5或者fnF5或者ctrlfnF5,不同的电脑可能不太一样)发现控制台一闪而过。 2.解决方案 解决方案:右击“项目”->“链接器”->“子系统”->修改为“…

云原生——什么是云原生?

❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 前言 伴随云计算的滚滚浪潮,云原生(CloudNative…