当前位置: 首页 > news >正文

使用 Postman 访问 Keycloak 端点

1. 引言

在本教程中,我们将首先快速回顾 OAuth 2.0、OpenID 和 Keycloak。然后,我们将了解 Keycloak REST API 以及如何在 Postman 中调用它们。

2. OAuth 2.0

OAuth 2.0 是一个授权框架,它允许经过身份验证的用户通过令牌向第三方授予访问权限。令牌通常仅限于某些生命周期有限的范围。因此,它是用户凭证的安全替代方案。

OAuth 2.0 带有四个主要组件:

  • Resource Owner(资源所有者) – 拥有受保护资源或数据的最终用户或系统

  • Resource Server(资源服务器) – 该服务通常通过基于 HTTP 的 API 公开受保护的资源

  • Client(客户端) – 代表资源所有者调用受保护的资源

  • Authorization Server(授权服务器) – 颁发 OAuth 2.0 令牌,并在对资源所有者进行身份验证后将其交付给客户端

OAuth 2.0 是一种具有一些标准流的协议,我们在此重点设计一下授权服务器组件。

3. OpenID 连接

OpenID Connect 1.0 (OIDC) 构建在 OAuth 2.0 之上,用于向协议添加身份管理层。因此,它允许客户端通过标准 OAuth 2.0 流程验证最终用户的身份并访问基本配置文件信息。OIDC 向 OAuth 2.0 引入了一些标准范围,例如 openidprofileemail

4. Keycloak 作为授权服务器

**JBoss 开发了 Keycloak 作为基于 Java 的开源身份和访问管理解决方案。 **除了支持 OAuth 2.0 和 OIDC 之外,它还提供身份代理、用户联合和 SSO 等功能。

我们可以将 Keycloak 用作带有管理控制台的独立服务器,或将其嵌入到 Spring 应用程序中。一旦我们以这两种方式中的任何一种运行了 Keycloak,我们就可以尝试访问其端点。

5. Keycloak 端点

Keycloak 为 OAuth 2.0 流程提供了各种 REST 端点。要在 Postman 中使用这些端点,我们首先要创建一个名为 “Keycloak” 的环境。然后,添加一些键值对,用于设置 Keycloak 授权服务器的 URL、领域、OAuth 2.0 客户端 ID 和客户端密码:
在这里插入图片描述

5.1. OpenID 配置端点

配置终端节点类似于根目录。它返回所有其他可用终端节点、支持的范围和声明以及签名算法。

让我们在 Postman 中创建一个请求:{{server}}/realms/{{realm}}/.well-known/openid-configuration。Postman 在运行时从所选环境中设置 {{server}} 和 {{realm}} 的值:

然后我们将执行请求,如果一切顺利,我们将得到一个响应:
在这里插入图片描述
如前所述,我们可以在响应中看到所有可用的终端节点,例如 “authorization_endpoint”、“token_endpoint” 等。

此外,响应中还有其他有用的属性。例如,我们可以从 “grant_types_supported” 中找出所有支持的授权类型,或者从 “scopes_supported” 中找出所有支持的作用域。

5.2. 授权端点

让我们继续了解负责 OAuth 2.0 授权代码流程的授权端点。它在 OpenID 配置响应中以 *“authorization_endpoint” *的形式提供。

授权端点:{{server}}/realms/{{realm}}/protocol/openid-connect/auth?response_type=code&client_id={{clientId}}

此外,此端点接受 scoperedirect_uri 作为可选参数。

我们不会在 Postman 中使用此端点,通常通过浏览器发起授权码流程。如果没有有效的登录 cookie,Keycloak 会将用户重定向到登录页面。最后,授权码会被发送到重定向 URL。接下来,我们将了解如何获取访问令牌。

5.3. 令牌端点

令牌终端节点允许我们检索访问令牌、刷新令牌或 id 令牌。OAuth 2.0 支持不同的授权类型,例如 authorization_code、refresh_token password。

令牌端点:{{server}}/realms/{{realm}}/protocol/openid-connect/token

但是,每种授权类型都需要一些专用的表单参数。

5.3.1. 授权码流程

我们将首先测试令牌端点,以获取code(授权码)对应的访问令牌。请求正文中传递这些表单参数:client_idclient_secretgrant_typecoderedirect_uri。令牌终端节点还接受 scope 作为可选参数:

模拟获得code
  1. 浏览器访问:

    http://192.168.1.212:8080/realms/cemx/protocol/openid-connect/auth?response_type=code&client_id=cemc-client&redirect_uri=http://192.168.1.128:8081/login/oauth2/code/keycloak

  2. 在登录界面里面输入用户名和密码

  3. 查看浏览器网络访问
    在这里插入图片描述
    通过code获得Token

在这里插入图片描述

5.3.2. 用户名密码流程

如果我们想绕过授权码流程,可以选择 password 授权类型。这里我们需要用户凭证,因此当我们的网站或应用程序中有内置登录页面时,可以使用此流程。让我们创建一个 Postman 请求,并在正文中传递表单参数 client_id、client_secret、grant_type、username 和 password:
在这里插入图片描述

在执行此请求之前,我们必须将 username 和 password 变量添加到 Postman 的环境键/值对中。

另一种有用的授权类型是* refresh_token*。当我们拥有来自上一次对 token 终端节点的有效刷新令牌时,我们可以使用它。刷新令牌流需要参数 client_idclient_secretgrant_typerefresh_token

我们需要响应access_token来测试其他终端节点。为了加快使用 Postman 的测试速度,我们可以在令牌终端节点请求的 Scripts 部分编写一个脚本:
在这里插入图片描述

如果出现错误”keycloak Client not allowed for direct access grants“,说明这里需要Direct access grants的开启

在这里插入图片描述

5.4. 用户信息端点

当我们拥有有效的访问令牌时,我们可以从用户信息终端节点检索用户配置文件数据。

用户信息端点:{{server}}/realms/{{realm}}/protocol/openid-connect/userinfo

现在,我们将为其创建一个 Postman 请求,并在 Authorization 标头中传递访问令牌:

这里的access_token就是上一步获得写入环境中的Access Token,考虑到需要获得用户信息,采用scope 为openid,所以,上一步我红色标准的参数别忘记了。
不然,该请求的响应头中有报错信息,如 error=“insufficient_scope”, error_description=“Missing openid scope”
原因:当前使用的 access_token 丢失了 openid 这个作用范围。说明这个 access_token 不支持 openid 的方式请求 userinfo。解决这个问题,需要在请求 token 时,显式的增加 scope=openid 的参数。
在这里插入图片描述

5.5. Token Introspect 端点

如果资源服务器需要验证访问令牌是否有效,或者想要获取更多关于它的元数据(特别是对于 opaque access tokens[不透明的访问令牌]),那么令牌内省端点就能满足需求。在这种情况下,资源服务器将 introspect 过程与安全配置集成在一起。

introspect 端点:{{server}}/realms/{{realm}}/protocol/openid-connect/token/introspect

然后,我们将在 Postman 中创建一个 introspect 请求,并将 client_id、client_secret 和 token 作为表单参数传递:

如果 access_token 有效,我们将得到如下响应:
在这里插入图片描述

但是,如果我们使用无效的访问令牌,则响应将是:
在这里插入图片描述

6. 总结

在本文中,使用正在运行的 Keycloak Server,我们为授权、令牌、用户信息和内省端点创建了 Postman 请求。

7. 关于

关于使用postman的具体操作,请参考《使用 Spring Boot 和 Keycloak 的 OAuth2 快速指南》,该下载区有源码。

相关文章:

使用 Postman 访问 Keycloak 端点

1. 引言 在本教程中,我们将首先快速回顾 OAuth 2.0、OpenID 和 Keycloak。然后,我们将了解 Keycloak REST API 以及如何在 Postman 中调用它们。 2. OAuth 2.0 OAuth 2.0 是一个授权框架,它允许经过身份验证的用户通过令牌向第三方授予访问…...

uniapp-X 对象动态取值

有个对象,例如 const data{age:12,list:[1,2,3,4]} 有个函数如下 export function getValueByPath(obj:UTSJSONObject, path:string):any {const current obj.getAny(path) as any;// 返回最终的值return current; } 期待 通过执行getValueByPath("xx.xx…...

建模软件Blender与Blender GIS插件安装教程

Blender(blender.org - Home of the Blender project - Free and Open 3D Creation Software)是一款功能强大的开源3D创作套件,它支持整个3D管道—建模、渲染、动画制作、模拟、渲染、合成和运动跟踪,甚至视频编辑和游戏制作&…...

数据解析与处理

数据解析与处理是数据科学、分析或开发中的核心步骤,涉及从原始数据中提取、清洗、转换和存储有效信息的过程。 一、数据解析 数据解析就是将原始数据(如文本、二进制、日志、API响应等)转换为结构化格式(如表格、字典、JSON等&…...

强化学习概览

强化学习的目标 智能体(Agent)通过与环境(Environment)交互,学习最大化累积奖励(Cumulative Reward)​的策略。 数学抽象 马尔科夫决策过程(MDP) 收益 由于马尔科夫决…...

如何在netlify一键部署静态网站

1. 准备你的项目 确保你的静态网站文件(如 HTML、CSS、JavaScript、图片等)都在一个文件夹中。通常,项目结构如下: my-static-site/ ├── index.html ├── styles/ │ └── styles.css └── scripts/└── script.js…...

2024中国信通院“集智”蓝皮书合集(附下载)

【目 录】 1. 数字政府一体化建设蓝皮书(2024年) 2. 数字乡村发展实践蓝皮书(2023年) 3. 中国工业互联网发展成效评估报告(2024年) 4. 云计算蓝皮书(2024年) 5. 具身智能发展报告…...

springboot单机支持1w并发,需要做哪些优化

Spring Boot单机如何支持1万并发,需要做哪些优化。 首先,我得回想一下Spring Boot处理高并发的关键点在哪里。可能涉及到多个层面,比如Web服务器配置、数据库优化、代码层面的调整,还有JVM调优之类的。 首先,用户可能…...

HBuilderx 插件开发变量名称翻译 ,中文转(小驼峰,大驼峰,下划线,常量,CSS类名)

HBuilderx 插件开发变量名称翻译 ,中文转(小驼峰,大驼峰,下划线,常量,CSS类名) 插件开发文档 工具HBuilderx ,创建项目 创建成功后目录 插件需求 开发时 用来将中文转为&#xff0…...

岳阳市美术馆预约平台(小程序论文源码调试讲解)

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专…...

C++ | 高级教程 | 文件和流

👻 概念 文件流输出使用标准库 fstream,定义三个新的数据类型: 数据类型描述ofstream输出文件流,用于创建文件并向文件写入信息。ifstream输入文件流,用于从文件读取信息。fstream文件流,且同时具有 ofst…...

Starlink卫星动力学系统仿真建模第九讲-滑模(SMC)控制算法原理简介及卫星控制应用

滑模控制(Sliding Mode Control)算法详解 一、基本原理 滑模控制(Sliding Mode Control, SMC)是一种变结构控制方法,通过设计一个滑模面(Sliding Surface),迫使系统状态在有限时间内…...

JVM相关面试题

1. 类加载与双亲委派机制 聊一下你对类加载器的理解。 类加载器是JVM用来加载类文件到内存的组件。它负责将字节码文件解析为java.lang.Class实例,并存储到运行时数据区的方法区中。类加载器分为Bootstrap ClassLoader、Extension ClassLoader和Application ClassLo…...

WiFi定位:宠物安全的“秘密武器”

从「全网寻狗」到「实时掌控」的进化史 凌晨三点收到邻居转发的「寻狗启事」,配图里的金毛犬项圈上赫然挂着某品牌定位器 —— 这样的魔幻场景在养宠圈并不罕见。随着宠物经济突破 3000 亿规模,智能定位器早已从「小众玩具」变成「刚需装备」。但你知道…...

【git】【reset全解】Git 回到上次提交并处理提交内容的不同方式

Git 回到上次提交并处理提交内容的不同方式 在 Git 中,若要回到上次提交并对提交内容进行不同处理,可使用 git reset 命令搭配不同选项来实现。以下为你详细介绍操作步骤及各选项的作用。 1. 查看提交历史 在操作之前,可通过以下命令查看提…...

【leetcode hot 100 11】移动零

一、暴力解法&#xff1a;两个 for 循环&#xff0c;外层循环遍历所有可能的左边界&#xff0c;内层循环遍历所有可能的右边界 class Solution {public int maxArea(int[] height) {int max_area0;for(int i0; i<height.length; i){for(int ji1; j<height.length; j){in…...

DeepSeek 部署实战:Ollama + 多客户端 + RAG

DeepSeek 部署实战&#xff1a;Ollama 多客户端 RAG 一、前置条件 &#xff08;一&#xff09;硬件要求 GPU&#xff1a;强烈建议使用 NVIDIA RTX 3090 或更高型号&#xff0c;显存至少 24GB。小显存跑大模型会遇到诸多问题&#xff0c;本人亲测 2080Ti 跑模型体验不佳。内…...

Linux通过设备名称如何定位故障硬盘

因为ceph集群的服务器硬盘都是直通的&#xff0c;当我们发现有硬盘存储坏道需要更换硬盘&#xff0c;但是因为盘序可能不是连续的&#xff0c;无法定位服务器上那块硬盘是故障的&#xff0c;如果冒然测试可能把正常的硬盘拔出&#xff0c;得不偿失&#xff0c;所以就写一下我定…...

大模型基础概念之神经网络宽度

在大模型中,神经网络宽度是提升模型容量的核心手段之一,与深度、数据规模共同构成性能的三大支柱。合理增加宽度可显著增强模型表达能力,但需结合正则化、硬件优化和结构设计进行平衡。未来趋势可能包括动态宽度调整、稀疏化宽度设计(如MoE)以及更高效宽度-深度复合缩放策…...

数据开发的简历及面试

简历 个人信息: 邮箱别写QQ邮箱, 写126邮箱/189邮箱等 学历>>本科及以上写,大专及以下不写 专业>>非计算机专业不写 政治面貌>>党员写, 群众不用写 掌握的技能: 精通 > 熟悉 > 了解 专业工具: 大数据相关的 公司: 如果没有可以写的>>金融服…...

多自由度冗余空间机械臂位姿一体化规划与控制【附代码】

✨ 长期致力于空间机械臂、对偶四元数、位姿一体化、路径规划、跟踪控制研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;基于对偶四元数的冗余机械臂运…...

DeepSeek RAG系统渗透测试全链路复现(含PoC代码与防御加固清单)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek RAG系统渗透测试全链路复现概览 DeepSeek RAG系统作为面向企业级知识检索增强生成的典型架构&#xff0c;其安全边界不仅涵盖LLM服务层&#xff0c;更延伸至向量数据库、检索代理、提示工程网关及外部…...

Shiro RememberMe反序列化漏洞深度解析与实战利用

1. 这个漏洞不是“老古董”&#xff0c;而是理解Java安全边界的活教材很多人看到CVE-2016-4437&#xff0c;第一反应是“Shiro都淘汰了&#xff0c;还讲这个干啥&#xff1f;”——我去年在给一家做政企内部系统的客户做渗透复测时&#xff0c;就遇到过一个上线三年的审批平台&…...

UE4动画蓝图实战:用双骨骼IK节点搞定手部穿模,附完整蓝图节点截图

UE4动画蓝图实战&#xff1a;双骨骼IK节点解决手部穿模的完整指南在角色动画开发中&#xff0c;手部穿模问题堪称"视觉杀手"。想象一下精心设计的角色挥拳时&#xff0c;拳头直接穿过墙壁或敌人身体——这种违和感足以毁掉整个场景的沉浸感。本文将彻底解决这个痛点&…...

深圳实体门店有必要做GEO AI代运营吗

深圳实体门店有必要做GEO AI代运营吗一、开篇引言2026年深圳本地实体商业竞争进入白热化阶段&#xff0c;全城数百万家线下实体门店涵盖本地生活、家装工装、汽车服务、餐饮娱乐、教育培训等全品类&#xff0c;传统线下地推、门店自然客流、传统团购平台引流效果持续下滑&#…...

本地柴油发电机组排行2023年最新榜单

柴油发电机是通过燃烧柴油驱动发动机&#xff0c;进而发电的设备&#xff0c;广泛应用于电力中断或无电网地区。1. 柴油发电机的核心工作原理是什么&#xff1f;柴油发电机是一种将化学能转化为电能的设备&#xff0c;其核心是柴油发动机与交流发电机的组合。当柴油在发动机内燃…...

DragonBones与Godot集成:骨骼动画的可编程化实践

1. 为什么在Godot里用DragonBones不是“锦上添花”&#xff0c;而是“绕不开的刚需” 去年上线一个横版动作手游Demo时&#xff0c;美术团队交来一套20个角色、每个角色含8套动画&#xff08;待机/跑动/跳跃/攻击/受击/死亡/闪避/必杀&#xff09;的Spine资源。我兴冲冲导入God…...

【数据结构与算法】数据结构基础——栈和队列

目录栈和队列1. 栈1.1 栈的概念1.2 栈的实现方式分析1.3 栈的实现1.3.1 栈的初始化与销毁1.3.2 入栈与出栈1.3.3 栈的判空与有效元素个数1.3.4 栈顶元素1.4 栈的扩展1.4.1 两栈共享空间2. 队列2.1 队列的概念2.2 队列的实现方式分析2.3 队列的实现2.3.1 队列的初始化与销毁2.3.…...

百度深度学习研究院的“叛将“,带着一颗芯片改变了中国智能驾驶——地平线余凯,从ImageNet冠军到征程出货1000万

大家好&#xff0c;我是写代码的篮球球痴。这篇文章跟我自己有点关系——我开的是理想汽车。理想的智驾系统 AD Pro&#xff0c;搭载的就是地平线征程 5 芯片。2026 年 1 月理想 AD Pro 4.0 推送&#xff0c;基于单颗征程 6M 实现了城市 NOA——这是行业里第一个用单颗 128TOPS…...

【DeepSeek灰度发布黄金法则】:20年SRE亲授7步零故障上线实战框架

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek灰度发布策略全景图 DeepSeek模型服务的灰度发布并非简单的流量切分&#xff0c;而是一套融合可观测性、渐进式验证与多维熔断机制的工程化闭环体系。其核心目标是在保障线上推理稳定性的同时&…...