干货分享|如何将前端代理服务器(BFF)接入身份认证(1)

本篇文章将通过实例来详细讲解如何将前端代理服务器(BFF)接入身份认证。我们将使用一个示例应用来演示 BFF 与身份认证的集成过程。

通过这些实例讲解,你将掌握 BFF 与身份认证的集成技巧,为你的前端应用提供安全可靠的认证机制。

接下来,让我们开始具体讲解每个步骤的实现细节。

1 在 Naive BFF 中接入认证平台

本小节将介绍如何在 Naive BFF 中接入身份认证平台。Naive BFF 是一个简单的前端代理服务器,它负责处理前端应用和后端服务之间的通信,并且在其中实现身份认证和授权机制。

由于并没有标准,因此在 Naive BFF 中接入认证平台可能是非常随意的,即能工作即可。一切流程都是由前端主导的,后端只是转发而已。在这种模式下,仍然只能使用公开客户端模式,因为后端并没有参与到认证流程中。在这种架构下,BFF 只是起到了一个代理的作用,解决了前端调用认证平台接口的跨域问题。

如果身份认证平台基于安全考虑,没有配置 CORS,那么前端就无法直接调用认证平台的接口,而是需要通过后端来转发。

​2 在 TMI BFF 中接入认证平台

本小节将介绍如何在TMI BFF 中接入身份认证平台。TMI BFF 是一个更高级的前端代理服务器,和 Naive BFF 相比,在和身份认证平台打交道的过程中,它可以提供更多的功能。

比如,它可以将整个认证过程的复杂性隐藏起来,只暴露简单的接口给前端应用调用。

在使用 TMI BFF 时,就完全可以使用机密客户端来和身份认证平台打交道,并且可以使用完整的授权码许可模式来完成认证。在前端详解授权码许可模式时展示了该流程涉及多个请求和跳转,然而在使用了 TMI BFF 的架构中,前端只需要向 BFF 发起一个令牌请求,就能获取到令牌响应。那些获取授权码、使用授权码再换取令牌的复杂请求响应都只发生在 BFF 和身份认证平台之间。

下面举一个例子来说明:在 egg.js 中对接 Keycloak。egg.js 是一个基于 Node.js 和 Koa 的企业级框架,它可以帮助我们快速搭建应用。接下来将使用egg.js 实现一个 TMI BFF,它将对接 Keycloak,实现身份认证和授权的功能。

完整的代码在https://github.com/Jeff-Tian/alpha,通过借助 egg-keycloak 插件,只需要很少的代码量就可以集成Keycloak。最终的效果可以在 https://uniheart.pa-ca.me/keycloak/login 体验。单击该链接后,会跳转至Keycloak 的登录页面,如图所示。

无论是通过邮箱/密码的方式,还是通过关注公众号登录的方式,登录完成后,会跳转回https://uniheart.pa-ca.me/keycloak/login 页面,并且以 JSON 格式展示获取的用户信息,如图所示。

文章未完待续,小伙伴们请等待一下哦!

本文摘自《数字身份认证技术与实践》,获出版社和作者授权发布。

数字身份认证技术与实践——jd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/729605.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

APP IOS

APP IOS苹果源生应用程序 APP Android-CSDN博客

【Sa-Token|3】Sa-Token集成到现有微服务详细介绍

一、系统架构调整 用户中心:保持现有的用户登录、注册接口不变。多个项目:前后端分离,保持现有逻辑不变。网关服务:新增或配置网关服务,处理所有请求并进行 Token 校验和转发。统一 Token 管理:通过 Sa-Tok…

肇庆具有资质等保机构有几家?在哪里?

在近期揭晓的“中国百强城市排行榜”中,广东省共有12个城市入选,其中包括肇庆。肇庆-山水之城,文化之韵,端砚之乡,岭南瑰宝,是一个非常有发展的城市,企业多多。这不不少肇庆企业在问&#xff0c…

嵌入式PID算法总结

参考 CMSIS-DSP PID 控制 学习历程 最开始,根据公式自己写PID算法;后面找资料时,发现wiki上介绍PID时,提供了伪代码,直接照着翻译一下就可用了;然后想要实现一个自己的PID库(能够实现多级PID…

10条提升大模型任务微调效果的tricks

在大型语言模型(LLMs)的研究和应用中,如何通过微调来适应特定任务是一个关键问题。尽管提示工程(PE)在提升LLMs的零样本学习和上下文内学习方面取得了显著成效,但关于如何设计有效的微调样本以进一步提升LL…

Elasticsearch中的Term_Filter过滤器技术

文章目录 一、引言二、Term Filter的工作原理与内部机制三、Term Filter的多样化使用场景3.1 精确匹配3.2 过滤分类与标签3.3 数据范围筛选3.4 复杂查询的构建 四、Term Filter的最佳实践与应用建议4.1 避免使用分析器4.2 优化索引映射4.3 充分利用缓存4.4 持续监控性能 五、结…

Redis 7.x 系列【2】单机部署

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. Windows2. Linux 1. Windows Redis作为一个高性能的内存数据库,和Linu…

查询mysql库表的几个语句

1、查询某个数据库的所有表 SELECTtable_name FROMinformation_schema.TABLES WHEREtable_schema database_namedatabase_name替换成你需要查询的数据库名称 2、查询某张表的所有字段名称 SELECTCOLUMN_NAME,column_comment FROMinformation_schema.COLUMNS WHEREtable…

功能测试 之 单模块测试----购物车模块

1.需求分析 (1)购物车显示 1.若未登录,提示登录,提示文案“购物车内暂时没有商品,登录后将显示您之前加入的商品” 2.若已登录,购物车没有商品,提示去购物。 未登录状态 已登录状态 3.购物车有…

Java图形用户界面设计AWT事件处理

AWT事件处理 前言一、GUI事件处理机制定义使用步骤Swing事件处理机制与AWT的区别 二、GUI中常见事件和事件监听器事件低级事件高级事件 事件监听器AWT事件类的继承关系 三、事件适配器三、示例代码示例示例一示例二 示例三 前言 推荐一个网站给想要了解或者学习人工智能知识的…

kafka的基本模型

kafka官网 线程和线程之间的数据交互 在jvm里不同的线程有自己的栈内存,但彼此之间交互可以在共享的内存中进行,即堆内存,堆内存会将这些消息放到队列中,具体实现jvm见,栈内存各自维护,堆内存大家共享 进…

华为手机怎么找回删除的照片?掌握3个方法,恢复不是梦

由于误删、设备故障、软件更新等原因,我们有时可能会不慎丢失这些宝贵的照片。当面对空空如也的相册时,那种失落感无法言喻。华为手机该怎么找回删除的照片呢?但是,请不要绝望!在科技的帮助下,我们可以采取…

记忆化搜索——AcWing 901. 滑雪

记忆化搜索 定义 记忆化搜索是一种结合了搜索和动态规划思想的方法。它通过将已经计算过的结果存储起来,在后续遇到相同情况时直接返回存储的结果,避免重复计算。 运用情况 当问题可以用递归方式求解,但存在大量重复计算时。一些复杂的组…

Unity核心

回顾 Unity核心学习的主要内容 项目展示 基础知识 认识模型制作流程 2D相关 图片导入设置相关 图片导入概述 参数设置——纹理类型 参数设置——纹理形状 参数设置——高级设置 参数设置——平铺拉伸 参数设置——平台设置(非常重要) Sprite Sprite Edit…

JavaSE 面向对象程序设计进阶 抽象类和接口 2024年详解

目录 抽象类 抽象方法 抽象类和抽象方法的注意事项 ​编辑 接口 如何定义接口 注意 代码实现 ​编辑 接口中的成员特点 接口和类之间的关系 1.类与类的关系 2.类与接口的关系 3.接口与接口的关系 ​编辑 拓展 接口中的默认方法 接口中的静态方法 ​编辑 接口…

网站配置https,购买ssl证书,配置域名,配置nginx,实现安全访问

文章目录 前言一. 域名1. 购买域名2. 添加记录 二. ssl证书创建测试证书购买正式证书证书签发证书申请提交审核DNS验证审核通过下载证书 三. 部署nginx上传ssl证书配置nginx.conf文件找到nginx.conf文件编辑nginx.conf文件重启nginx 前言 当你创建了一个网站后,通过…

73. UE5 RPG 优化投射物以及敌人生成

解决发射物会与地面产生交互的问题 之前一直遇到发射物的体积过大会在发射时,和地面产生交互,我们可以调整小一些,然后为了防止它和自身产生交互事件。我们可以实现它在生成后,不会触发相关事件,而是在一定时间后。 对…

振弦式渗压计在土木工程安全监测中的重要性解析

在土木工程领域中,特别是涉及到坝体、隧道、路基等复杂结构的监测与安全管理时,渗压计作为一种关键的测量工具,发挥着举足轻重的作用。其中,振弦式渗压计以其独特的优点,得到了广泛的应用和认可。本文将对振弦式渗压计…

一文读懂 HTTP 和 RPC 的区别

随着互联网技术的发展,网络通信在各种应用中扮演着至关重要的角色。无论是构建 Web 应用还是进行服务之间的交互,选择合适的通讯协议成为开发者们需要深入思考的问题。在众多协议中,HTTP(HyperText Transfer Protocol)…

【IEEE ACCESS】论文发表记录 2

上次发IEEE ACCESS 感觉不错,速度较快,审稿费也不太夸张,这次梅开二度,希望好运。 官网:IEEE Access: The Multidisciplinary Open Access Journal 期刊水平: 范围认证 -中国科学院文献情报中心期刊分区表…