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

使用开源 Authentik 实现 AWS 单点登录

前言懒得自己编了, Gemini 这样介绍 Authentik:简单来说Authentik 是一款功能极其强大的开源身份验证与访问管理 (IAM) 解决方案。如果你觉得像 Okta 或 Auth0 这种商业服务太贵或者觉得像 Keycloak 这种传统方案配置起来太头疼那么 Authentik 就是一个非常现代且灵活的替代品。它主要用于为你的应用、服务器和网络服务提供统一的登录入口。官网: https://goauthentik.io/本文将基于开源版的 Authentik 使用 Docker 部署, 并完成和 AWS 控制台单点登录的配置. 下面正文开始.部署 Authentik参考官方 Docker Compose 部署文档 在安装好 Docker 和 Docker-Compose 环境的 Ubuntu 系统中实现:# 创建存储 Authentik 数据的文件夹mkdirauthentikcdauthentik# 下载官方的 docker-compose 配置模板wgethttps://docs.goauthentik.io/compose.yml# 生成 PostgreSQL 数据库随机密码 (保存在 .evn 环境变量配置文件中)echoPG_PASS$(openssl rand-base6436|tr-d\n).envechoAUTHENTIK_SECRET_KEY$(openssl rand-base6460|tr-d\n).env# 启动dockercompose pulldockercompose up-d注: 国内需要给 Docker 附魔才能正常拉镜像, 参考 配置 Docker 使用代理默认配置下, Authentik 监听端口为9000和9443, 启动后访问http://server_ip:9000等待系统加载完成:刷出来登陆界面就表明系统准备就绪了:初始化 Authentik系统就绪后, 首先访问地址http://server_ip:9000/if/flow/initial-setup/进入初始化配置界面:输入邮箱, 密码, 继续后来到用户视角的首页. 注意这里输入的邮箱和密码就是管理员账号.点击右上角的 Admin interface 进入后台管理界面:至此, Authentik 就准备就绪了, 下面开始配置 AWS 控制台单点登录的流程.AWS 信任关系配置这里使用 IAM SAML 方式进行配置, 参考文档 Integrate with Amazon Web Services (Classic IAM)Authentik 配置Property Mappings 配置解释一下为啥需要做这一步, 这是因为在传递身份信息时的 SAML 断言文档里面会有大量的属性, 我们需要通过这种方式明确让 Authentik 给 AWS 传递信息的时候将符合 AWS 格式要求的 SAML 属性给带进去.打开 Authentik 管理员界面, Customization Property Mappings Create选择 SAML Provider Property Mapping填入以下信息:Name:AWS Role Mapping(这个不要求, 也可以自己命名)SAML Attribute Name:https://aws.amazon.com/SAML/Attributes/Role(注意这个属性名称在中国区 AWS 也是这样写)Friendly Name: 留空Expression: 这个是 Python 代码, 对于固定的单个目标 AWS Role, 直接return符合要求格式的 ARN 就行. 由于目前还没有在 AWS IAM 中创建对应的 Role 和 SAML Provider, 所以这里就直接先按格式写好名字, 后面再创建. 下面例子中我规划的 Role 名称Authentik_Role, SAML Provider 名称Authentik_providerreturnarn:aws-cn:iam::123456789012:role/Authentik_Role,arn:aws-cn:iam::123456789012:saml-provider/Authentik_provider重复上面相同的操作, 再创建一个新的 Property mapping:Name:AWS Role Session Name(这个不要求, 也可以自己命名)SAML Attribute Name:https://aws.amazon.com/SAML/Attributes/RoleSessionName(注意这个属性名称在中国区 AWS 也是这样写)Friendly Name: 留空Expression: 这个很简单, 直接返回user.username就中returnuser.username至此, 我们就完成了两个 Property Mapping 的准备工作创建 Application Provider继续在 Authentik 管理界面打开 Applications Create with ProviderApplication Name 填入AWS, 下方会自动生成Slug, 继续Provider 选择SAML Provider继续注意下面配置 Provider 时, 中国区 AWS 用特定内容:Name: 用自动生成的就好Authorization flow:default-provider-authorization-implicit-consent (Authorize Application)Protocol settings:ACS URL:https://signin.amazonaws.cn/saml(注意中国区是 .cn)Issuer:authentikAdvanced protocol settings:Property mappings: 把上面创建好的两个映射都选中移到 Selected User Property MappingsService Provider Binding:Post(默认就是这个, 确认一下)下一步 Configure Policy/User/Group Bindings 不做设置, 继续下一步完成配置.下载 Metadata打开 Applications Providers AWS, 在 Related objects 下方下载 Metadata得到 XML 文件Provider for AWS_authentik_meta.xml后我们接下来就要到 AWS 控制台进行配置.AWS IAM 配置创建 Identity provider类型选择 SAML, 注意 Provider name 需要和前面我们准备 Property mapping 时在 Python 代码中返回的 ARN 中名称一致, 得叫Authentik_provider, 选择上一步下载的Provider for AWS_authentik_meta.xml作为 Metadata 文档上传.创建完成后打开详情, 确认 ARN 和前面 Python 代码中写的一致:创建 RoleTrusted entity type 选择 SAML 2.0 federation, 并选择上面创建好的Authentik_provider, 允许的操作选择Allow programmatic and Amazon Web Services Management Console access勾选要赋予的权限策略下一步, 需要注意这里 Role 的名称也需要和前面我们准备 Property mapping 时在 Python 代码中返回的 ARN 中名称一致, 得叫Authentik_Role, 完成创建.测试为了避免浏览器缓存影响测试, 新开一个浏览器隐私窗口, 访问 Authentik 首页, 可以看到 My applications 中出现了前面准备好的 AWS 应用:点击图标即可跳转至 AWS 控制台, 右上角确认当前使用的联合身份为 IAM RoleAuthentik_Role全文完.补充: 修改登陆后默认 Region默认配置完成后登陆的 AWS Console 是北京区, 如果需要设置为默认宁夏区, 需要修改 SAML Provider, 展开 Advanced protocol settings编辑 Default relay state 内容为宁夏区的 Console 首页 URLhttps://cn-northwest-1.console.amazonaws.cn/console/home?regioncn-northwest-1

相关文章:

使用开源 Authentik 实现 AWS 单点登录

前言 懒得自己编了, Gemini 这样介绍 Authentik: 简单来说,Authentik 是一款功能极其强大的开源身份验证与访问管理 (IAM) 解决方案。 如果你觉得像 Okta 或 Auth0 这种商业服务太贵,或者觉得像 Keycloak 这种传统方案配置起来太头疼,那么…...

袁永福 电子病历,医疗信息化际

在AI辅助开发的语境下,Skill就是一个包含了领域知识、最佳实践、代码模板的知识包。 以"DAO层CRUD生成"为例,一个Skill包含: /mnt/skills/dao-crud/ ├── SKILL.md # 使用说明 │ ├── 何时使用这个Skill │ …...

算法优化中的多线程数据一致性问题的技术9

多线程数据一致性问题概述多线程环境下,数据一致性是算法优化中常见的技术挑战。多个线程同时访问和修改共享数据可能导致竞态条件、脏读或不可重复读等问题。确保数据一致性对算法正确性和性能至关重要。常见数据一致性问题类型竞态条件(Race Condition…...

BM25(Best Matching 25)信息检索

文章目录一、BM25本质在做什么二、核心思想(直观理解)1️⃣ 词出现次数(Term Frequency, TF)2️⃣ 词的稀有程度(IDF)3️⃣ 文档长度归一化三、BM25公式(核心)这是标准BM25打分函数&…...

AI 编程盛行的时代,为什么 “『DC- WFW』” 仍然具有必要性?沼

这&#xff0c;是一个采用C精灵库编写的程序&#xff0c;它画了一幅漂亮的图形&#xff1a; 复制代码 #include "sprites.h" //包含C精灵库 Sprite turtle; //建立角色叫turtle void draw(int d){for(int i0;i<5;i)turtle.fd(d).left(72); } int main(){ …...

算法的能耗模型与绿色计算优化方向的技术4

能耗模型基础理论算法复杂度与能耗关系时间复杂度与空间复杂度对硬件资源消耗的影响&#xff0c;建立数学模型描述指令执行次数、数据访问频率与能耗的关联。硬件层面的能耗因素CPU动态功耗&#xff08;CVf&#xff09;、静态功耗、内存访问能耗、缓存命中率等关键参数&#xf…...

3步解决浏览器Markdown阅读难题:从乱码到专业渲染的蜕变之路

3步解决浏览器Markdown阅读难题&#xff1a;从乱码到专业渲染的蜕变之路 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 你是否遇到过这样的窘境&#xff1a;在浏览器中打开本地M…...

Docker 容器中运行 AI CLI 工具:用户隔离与持久化卷实战指南暗

环境安装 pip install keystone-engine capstone unicorn 这3个工具用法极其简单&#xff0c;下面通过示例来演示其用法。 Keystone 示例 from keystone import * CODE b"INC ECX; ADD EDX, ECX" try:ks Ks(KS_ARCH_X86, KS_MODE_64)encoding, count ks.asm(CODE)…...

电子电路中的“心脏”:电源铝

前言 Kubernetes 本身并不复杂&#xff0c;是我们把它搞复杂的。无论是刻意为之还是那种虽然出于好意却将优雅的原语堆砌成 鲁布戈德堡机械 的狂热。平台最初提供的 ReplicaSets、Services、ConfigMaps&#xff0c;这些基础组件简单直接&#xff0c;甚至显得有些枯燥。但后来我…...

如何永久保存微信聊天记录:WeChatMsg本地数据备份完整指南

如何永久保存微信聊天记录&#xff1a;WeChatMsg本地数据备份完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…...

第十五节:启动序列——从 claude 命令到 REPL 就绪

知识图谱定位:前面两节我们分别拆解了终端 UI(第13节 React Ink)和命令系统(第14节 斜杠路由)——它们都假设一个前提:REPL 已经就绪。但从用户在终端敲下 claude 按回车,到他看到交互界面,这中间到底发生了什么?答案是一个精心设计的三阶段启动序列:cli.tsx::main()…...

贾子科学的历史意义与现实影响:挑战西方科学哲学霸权的新范式

贾子科学的历史意义与现实影响&#xff1a;挑战西方科学哲学霸权的新范式摘要&#xff1a; 贾子科学是贾龙栋于2025-2026年提出的原创科学哲学体系&#xff0c;其历史意义在于直接挑战以波普尔证伪主义为核心的西方科学划界标准&#xff0c;提出“公理驱动可结构化”新标尺&…...

Vitest单元测试教程

Vitest 是 Vite 生态的极速单元测试框架&#xff0c;API 兼容 Jest&#xff0c;上手快、配置简单、性能极高。下面从 安装 → 配置 → 编写测试 → 常用断言 → Mock → 组件测试 → 运行与覆盖率 完整流程带你上手。一、安装 1. 基础安装 npm i -D vitest # 或 yarn add -D vi…...

Jenkins 学习总结腋

先唠两句&#xff1a;参数就像餐厅点单 把API想象成一家餐厅的“后厨系统”。 ? 路径参数/dishes/{dish_id} -> 好比你要点“宫保鸡丁”这道具体的菜&#xff0c;它是菜单&#xff08;资源路径&#xff09;的一部分。查询参数/dishes?spicytrue&typeSichuan -> 好比…...

2025届学术党必备的十大AI科研平台横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能本领在学术写作范畴的运用越来越普遍&#xff0c;它的关键价值是协助科研者达成文献…...

ARM 架构 JuiceFS 性能优化:基于 MLPerf 的实践与调优死

Qt是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本笔记将重点介绍QSpinBox数值微调组件的常用方法及灵活应用。…...

OpenClaw 太难装了?试试 LangTARS:一行命令部署 + WebUI 管理面板,还能接入 Dify/Coze/nn??悠

1. 什么是 Apache SeaTunnel&#xff1f; Apache SeaTunnel 是一个非常易于使用、高性能、支持实时流式和离线批处理的海量数据集成平台。它的目标是解决常见的数据集成问题&#xff0c;如数据源多样性、同步场景复杂性以及资源消耗高的问题。 核心特性 丰富的数据源支持&#…...

PHP AI校验配置被低估的致命细节(内存泄漏触发点、AST解析偏差、Token限流阈值)——资深SRE连夜重写配置手册

第一章&#xff1a;PHP AI校验配置的全局认知与风险图谱PHP AI校验配置并非孤立的技术模块&#xff0c;而是横跨应用层、中间件、模型服务与基础设施的复合型安全控制面。其核心目标是在AI能力注入业务流程的同时&#xff0c;确保输入合法性、输出可控性、行为可审计及策略可收…...

嵌入式进阶——MCU启动与代码执行教程

MCU启动与代码执行教程 1. 简介 本教程旨在帮助理解&#xff0c;深入剖析ARM Cortex-M系列单片机上电后的完整启动流程&#xff0c;以及程序在Flash、RAM、寄存器三者的协同执行机制。基于STM32等典型MCU&#xff0c;从硬件复位瞬间开始&#xff0c;逐步讲解向量表加载、Reset_…...

学Simulink——基于Simulink的坡道起步防溜坡电机转矩控制

目录 手把手教你学Simulink ——基于Simulink的坡道起步防溜坡电机转矩控制 一、问题背景 二、系统架构与控制逻辑 1. 控制层级 2. 防溜坡转矩需求 三、无传感器坡度估计方法 方法:基于加速度计 + 车速微分 Simulink 实现 四、防溜坡转矩控制器设计 1. 基础转矩规划…...

基于yolov8和faster-rcnn的电动车戴头盔检测,界面可选择模型,支持图像、视频和摄像实时检测【pytorch框架、python源码】

更多目标检测、图像分类识别、目标追踪、图像分割、图像检索等项目可看我主页其他文章 功能演示&#xff08;看shi pin 下面的简介&#xff09;&#xff1a; https://www.bilibili.com/video/BV1DWXrBaE3Z/?spm_id_from333.1387.homepage.video_card.click&vd_source23c…...

打卡信奥刷题(3078)用C++实现信奥题 P7033 [NWRRC 2016] CodeCoder vs TopForces

P7033 [NWRRC 2016] CodeCoder vs TopForces 题目描述 在 Byteland&#xff0c;竞赛编程非常流行。事实上&#xff0c;每位 Byteland 的公民都在两个编程网站——CodeCoder 和 TopForces 上注册。每个网站都有自己专有的评分系统。每位公民在每个网站上都有一个唯一的整数评分&…...

打卡信奥刷题(3077)用C++实现信奥题 P7023 [NWRRC 2017] Equal Numbers

P7023 [NWRRC 2017] Equal Numbers 题目描述 给定一个包含 nnn 个整数 a1,…,ana_{1}, \ldots, a_{n}a1​,…,an​ 的列表。你可以执行以下操作&#xff1a;选择某个 aia_{i}ai​ 并将其乘以任意正整数。 你的任务是计算在进行 kkk 次操作后列表中可能出现的不同整数的最小数…...

法国Hornetsecurity联合里尔大学:如何让人工智能学会保护隐私

这项由法国Hornetsecurity公司与里尔大学、法国国家信息与自动化研究院(Inria)、法国国家科学研究中心(CNRS)以及里尔中央理工学院联合开展的研究&#xff0c;发表于2026年3月31日的计算机科学期刊&#xff0c;论文编号为arXiv:2603.29497v1。有兴趣深入了解的读者可以通过这个…...

SAP MM | 物料主数据:为什么修改了“特殊采购类型”但在 MM04 查不到修改历史?

在 SAP 物料主数据&#xff08;Material Master&#xff09;的操作中&#xff0c;用户有时会修改 “特殊采购类型”&#xff08;SOBSL&#xff09;&#xff0c;比如从“厂内生产”改为“从其他工厂调拨&#xff08;40&#xff09;”。但用户说&#xff0c;修改了主数据之后&…...

容器化网络与Kubernetes网络深度解析

一、Docker网络基础 Docker四大网络驱动 Driver 1: Bridge (默认) ┌────────────────────────────────┐ │ Docker主机 │ │ │ │ ┌─────────────┐ ┌──────────┐ │ │ │ Container A │ │ Bridge │ │ │…...

Shell流程控制(if-else、循环,实现复杂逻辑)

在Linux/Unix系统中&#xff0c;Shell脚本是自动化运维、批量处理任务的核心工具&#xff0c;而流程控制则是让脚本“摆脱线性执行”、实现灵活逻辑的关键。无论是简单的条件判断&#xff08;如“文件是否存在”&#xff09;&#xff0c;还是复杂的批量操作&#xff08;如“遍历…...

Shell通配符与正则表达式(批量匹配,精准筛选)

在Linux Shell运维、脚本开发中&#xff0c;“匹配”是高频操作——批量处理文件、筛选日志内容、定位目标数据&#xff0c;都离不开高效的匹配工具。而Shell通配符与正则表达式&#xff0c;正是支撑这些操作的核心技术。很多初学者容易混淆二者&#xff0c;误以为它们是“同一…...

Shell变量与环境变量(自定义配置,灵活复用)

在Linux/Unix Shell编程与日常运维中&#xff0c;变量是贯穿始终的核心工具——它就像一个可自定义的“数据容器”&#xff0c;能存储文本、数字、路径等各类信息&#xff0c;通过灵活配置实现代码复用、环境统一&#xff0c;大幅提升操作效率与脚本可维护性。很多新手容易混淆…...

Shell核心基础命令(下)——系统与权限操作

Shell核心基础命令&#xff08;下&#xff09;——系统与权限操作 前言 在Linux系统中&#xff0c;权限管理是系统安全的基石。作为多用户多任务操作系统&#xff0c;Linux通过精细的用户-组-权限模型来控制对系统资源的访问。本文将深入讲解Shell中与系统权限相关的核心命令…...