将 MinIO 与 Keycloak OIDC 集成

news2024/10/7 10:23:19

Keycloak是一种单点登录解决方案。使用Keycloak,用户使用Keycloak而不是MinIO进行身份验证。如果没有Keycloak,您将不得不为每个用户创建一个单独的身份 - 从长远来看,这将很麻烦。您需要一个集中身份解决方案来管理 MinIO 的身份验证和授权。在这篇博文中,我们将向您展示如何设置 MinIO 以使用 Keycloak。但从广义上讲,它还应该让您了解 OIDC 是如何配置 MinIO 的,因此您可以将其与 Keycloak 以外的任何东西一起使用,这里我们只是以它为例。

如何设置 Keycloak

在这里,我们将Keycloak作为docker容器启动,以使其快速启动并运行以进行测试。但在生产环境中,请遵循 Kubernetes 部署方法与 MinIO 一起使用。

让我们继续安装 keycloak

cd ~

Git 克隆 keycloak 容器仓库

sudo rm -rf keycloak-containers

git clone git@github.com:keycloak/keycloak-containers.git


启动 keycloak 实例

cd keycloak-containers/server

git checkout 12.0.4

docker build -t jboss/keycloak:12.0.4 .

docker run --rm -p 9080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak:12.0.4

启动后, http://localhost:9080 使用以下凭据访问 keycloak

user: admin

password: admin

按照以下步骤将Keycloak配置为与MinIO一起使用。这些将在 Keycloak UI 中遵循。

步骤1:

Create a Realm called "myrealm"

步骤2:

Clients

Click on account

Settings, set "Valid Redirect URIs" to "*"

expand "Advanced Settings" and set "Access Token Lifespan" to 1 Hours

Save

步骤3:

Clients

Click on `account`

Mappers Tab in the middle

Click `Create` button

"Name" with "anytext"

`Mapper Type` is `User Attribute`

`User Attribute` is `policy`

Token Claim Name is policy

Claim JSON Type is string

Click "Create" button

Name: Audience

Mapper Type: Audience

Included Client Audience: security-admin-console

Save the two mappers

Clients > account > Setting > "Service Accounts Enabled" = ON

步骤4:

Go to Roles

Add new Role `admin` with Description `${role_admin}`

"Composite Roles" as "ON"

"Available Roles" move them to "Associated Roles"

Do the same for all "Client Roles" from left to right.

步骤5:

Roles

Default Roles

"Available Roles" move all to "Real Default Roles"

Same for all "Client Roles" all from left to right

步骤6:

Clients

account

"Service Account Roles" tab.

"Available Roles" move to "Assigned Roles"

Same for all "Client Roles"

步骤7:

Users

Create "minio" user

Attribute "policy" value "readwrite"

 

Put `minio123` password

"Role Mappings" Tab

"Available Roles" all from left to right

Same for all "Client Roles"

Add and Save

步骤8:

将以下内容复制到 MinIO ENV var MINIO_IDENTITY_OPENID_CLIENT_SECRET

Clients

account

Credentials

Secret

81f55c5f-137f-4d83-82c5-c7fdc73cad5e

这样

MINIO_IDENTITY_OPENID_CLIENT_SECRET="81f55c5f-137f-4d83-82c5-c7fdc73cad5e"

接下来,让我们使用 MinIO 进行配置

使用 MinIO 进行配置

我们将向您展示使用 MinIO 进行配置的几种不同方法。首先是裸机安装,其次是 Kubernetes。

如果您在裸机或 docker 中启动它,您可以“导出”以下环境变量

export MINIO_IDENTITY_OPENID_SCOPES="openid,profile,email"

export MINIO_BROWSER_REDIRECT_URL=http://localhost:9001

export MINIO_SERVER_URL=http://localhost:9000

export MINIO_IDENTITY_OPENID_CLIENT_ID="account"

export MINIO_IDENTITY_OPENID_CLIENT_SECRET="81f55c5f-137f-4d83-82c5-c7fdc73cad5e"

export MINIO_IDENTITY_OPENID_CONFIG_URL=http://localhost:9080/auth/realms/myrealm/.well-known/openid-configuration

export MINIO_ROOT_USER=minio

export MINIO_ROOT_PASSWORD=minio123


minio server /Volumes/data{1...4} --address :9000 --console-address :9001

然后使用 SSO 登录 http://localhost:9001/login

如果您使用的是 Tenant Operator,则其过程有点类似。在租户规范中设置以下环境变量

 env:

  - name: MINIO_IDENTITY_OPENID_CLIENT_SECRET

	value: 6aabe0ea-8d5f-412c-99f8-63b999ccd281

  - name: MINIO_IDENTITY_OPENID_SCOPES

	value: openid,profile,email

  - name: MINIO_BROWSER_REDIRECT_URL

	value: "https://72.140.145.27"

  - name: MINIO_SERVER_URL

	value: "https://minio.tenant-lite.svc.cluster.local:443"

  - name: MINIO_IDENTITY_OPENID_CLIENT_ID

	value: account

  - name: MINIO_IDENTITY_OPENID_CONFIG_URL

	value: "http://72.140.145.27/auth/realms/myrealm/.well-known/openid-configuration"

  • 注1:MINIO_BROWSER_REDIRECT_URL是控制台UI。它必须从节点端口公开到群集,以端口转发到公共 IP。

  • 注2:MINIO_IDENTITY_OPENID_CONFIG_URL我们的密钥斗篷是公开的,这也需要端口转发并设置公共IP地址。期望 SSO 的配置方式与连接到类似软件的公共方式相同,并且也可以是 auth0。

使用 SSO 访问租户

该过程的其余部分是相同的,无论是裸机、docker 还是 Kubernetes。提供您的 MinIO 登录凭据。

正如预期的那样,您应该会看到如下所示的 UI

就这么简单。

最后的思考

如您所见,要使 Keycloak 等 OIDC 工具与 MinIO 集成,无需做太多工作。您只需将 OIDC 工具配置为接受来自 MinIO 的身份验证请求,并将 MinIO 设置为重定向到您的 OIDC 工具。您现在可以使用这个实际工作示例来配置您自己的 OIDC。

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

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

相关文章

vue3 vxe-grid列中绑定vxe-switch实现数据更新

1、先上一张图&#xff1a; <template #valueSlot"{ row }"><vxe-switch :value"getV(row.svalue)" change"changeSwitch(row)" /></template>function getV(value){return value 1;};function changeSwitch(row) {console.l…

数据分析必备:一步步教你如何用matplotlib做数据可视化(11)

1、Matplotlib 三维绘图 尽管Matplotlib最初设计时只考虑了二维绘图&#xff0c;但是在后来的版本中&#xff0c;Matplotlib的二维显示器上构建了一些三维绘图实用程序&#xff0c;以提供一组三维数据可视化工具。通过导入Matplotlib包中包含的mplot3d工具包&#xff0c;可以启…

推荐免费好用的日历和浏览器,你一定要下载使用

猫眼浏览器 猫眼浏览器是一款基于Chromium内核的增强版网页浏览器&#xff0c;融合了Chrome的核心功能与Safari的优美外观。它以简约和安全为目标&#xff0c;提供了快速、流畅的网页加载和浏览体验。 猫眼浏览器内置了隐私保护和广告屏蔽功能&#xff0c;能够有效防止用户数据…

Linux tcpdump抓包必备知识

author: 放牛娃学编程 moto: 分享与热爱&#xff0c;不是大爱我不说 放牛娃每日一语: 除了你自己&#xff0c;没有人可以说你不行 别急着划开&#xff0c;这篇笔记一定能够给你带来收获 因为这里你能学到AI永远也给不了你的知识 Linux tcpdump抓包必备知识 文章目录 Linux tcp…

Vue3 头像是圆形,hover上去时头像出现黑色半透明样式,且中间显示修改两字的实现

实现效果 原头像 hover效果 实现方式 博主在实际开发过程中使用mouseover和mouseout会出现无法点击或hover频繁闪动的问题&#xff0c;故这里采用的是css中的hover&#xff0c;利用hover也能轻松实现上述效果&#xff0c;且完全不会影响点击事件的使用。 <template> &…

Mysql: 数据模型

一.关系型数据库 概念:建立在关系型基础上,由多张相互连接的二维表组成的数据库。 1.关系型数据库: 2.特点&#xff1a; 1.使用表存储数据,格式统一,便于维护。 2.使用SQL语言操作,标准统一,使用方便。 3.数据模型 通过客户端连接DBMS可以创建多个数据库,在数据库中…

TOPGP-TIPTOP调用外部Webservice

功能要求&#xff1a;ERP作业调用外部系统的webserice更新数据。 演示环境&#xff1a;ERP作业cooi002&#xff08;员工档案&#xff09;录入后更新到外部系统员工档案表。 1、外部系统的WebSerice使用.net搭建 2、在Service.cs中写一个调用方法erp_other erp_other中两个参数…

Windows 中 Chrome / Edge / Firefox 浏览器书签文件默认存储路径

1. Chrome 浏览器 按组合键 Win R&#xff0c;打开运行对话框&#xff0c;输入 %USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default或在Chrome 浏览器地址栏输入 chrome://version查看【个人资料路径】 2. Edge 浏览器 按组合键 Win R&#xff0c;打开运行对…

dockerfile文件的中的命令

# 基础镜像 FROM registry.cn-beijing.aliyuncs.com/205erp/myopenjdk:8.6 # 设置工作目录 WORKDIR /opt # 拷贝jar包到工作目录 COPY target/*.jar app.jar RUN ls # 设置暴漏的端口 EXPOSE 8080 # 启动jar包 CMD/ENTRYPOINT java ${JAVA_TOOL_OPTIONS} -jar app.jarCMD与ENT…

【uniapp】uniapp开发微信小程序入门教程

HBuilderx中uniapp开发微信小程序入门教程 一、 环境搭建 1. HBuilderx下载安装 HBuilderx下载安装地址 2. 微信开发者工具下载安装 微信开发者工地址具下载安装 二、创建uniapp项目 选择&#xff1a;文件>新建>项目>uni-app 输入项目名称>选择默认模板>…

揭秘App推广黑科技:xinstall如何助力企业实现数据驱动增长!

一、引言 在互联网时代&#xff0c;App的推广和运营面临着前所未有的挑战。随着流量红利的衰退&#xff0c;如何高效、精准地触达目标用户&#xff0c;成为众多企业亟待解决的问题。今天&#xff0c;我们将为大家介绍一款能够破解App推广难题的神器——xinstall&#xff0c;它以…

2024年华东杯B题数学建模论文:基于车辆运动学转弯模型的自动驾驶规划问题

摘要 随着自动驾驶技术的发展&#xff0c;车辆转弯问题成为关键挑战。本文针对自动驾驶车辆在转弯过程中的数学建模、路径规划及避障策略进行了深入研究&#xff0c;旨在提升自动驾驶车辆的行驶安全性与效率。 针对问题1&#xff0c;对于四轮前轮驱动车辆的转弯问题&#xff0c…

老胡的周刊(第146期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 pingvin-share[2] Pingvin Share 是一个可自…

【经典算法OJ题讲解】

1.移除元素 经典算法OJ题1&#xff1a; 移除元素 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/remove-element/desc…

vue3滚动日历选择器

倒叙日历&#xff1a; <template><div class"date-picker"><div class"column" wheel"onYearScroll"><div v-for"(year, index) in displayedYears" :key"index" :class"{current: year current…

只知道无人机能航拍,你已经out啦!!!

无人机行业应用相当广泛&#xff0c;涵盖了航拍、植保、测绘、巡检、安防、物流等多个领域。并且随着科技的不断发展&#xff0c;无人机技术也在不断创新和完善。无人机行业的应用具有多重优势&#xff0c;这些优势使得无人机在众多领域中得以广泛应用并取得显著的成效。 航拍…

电脑不小心删除的文件怎么恢复?4个必备恢复方法!

“刚刚在对电脑里的某些垃圾文件进行清理时&#xff0c;我一不小心误删了比较重要的数据。这些误删的数据还有机会恢复吗&#xff1f;希望大家帮帮我&#xff0c;非常感谢&#xff01;” 在这个数字化飞速发展的时代&#xff0c;电脑早已成为我们日常生活和工作中不可或缺的一部…

AI如何让办公更智能?WPS AI海外版给出答案

导读&#xff1a;从语义检查到一键生成PPT&#xff0c;WPS Office海外版如何面向2亿月活用户快速推出AI功能&#xff1f; 近日&#xff0c;WPS Office海外版应用亚马逊云科技Amazon Bedrock等生成式AI技术与服务&#xff0c;在海外正式推出人工智能应用WPS AI海外版&#xff0c…

扣子/coze智能体开发的经验与避坑指南

近期&#xff0c;我计划几场关于分享智能体应用开发的活动。因此&#xff0c;我顺便总结了我在创建智能体过程中遇到的问题和解决方案&#xff0c;帮助大家避免类似的陷阱&#xff0c;提高智能体的性能和用户体验。以下是我总结的几点关键经验。 1. 人设与回复逻辑的提示词 在…

提取图像主色调

依赖 Pillow 库。 提取图像主色调&#xff0c;直接上代码&#xff1a; from PIL import Imagedef extract_main_color(img_path: str, delta_h: float 0.3) -> str:"""获取图像主色调Args:img_path: 输入图像的路径delta_h: 像素色相和平均色相做减法的绝…