惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
Google Online Security Blog
Google Online Security Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Simon Willison's Weblog
Simon Willison's Weblog
T
Threat Research - Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
L
Lohrmann on Cybersecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Forbes - Security
Forbes - Security
P
Palo Alto Networks Blog
Schneier on Security
Schneier on Security
S
Schneier on Security
T
Tor Project blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学
The Hacker News
The Hacker News
Hacker News - Newest:
Hacker News - Newest: "LLM"
罗磊的独立博客
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
雷峰网
雷峰网
S
Security @ Cisco Blogs
PCI Perspectives
PCI Perspectives
Spread Privacy
Spread Privacy
W
WeLiveSecurity
SecWiki News
SecWiki News
A
About on SuperTechFans
H
Help Net Security
博客园 - 司徒正美
Recent Commits to openclaw:main
Recent Commits to openclaw:main
爱范儿
爱范儿
S
Securelist
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
月光博客
月光博客
Jina AI
Jina AI
博客园 - 叶小钗
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
Recent Announcements
Recent Announcements
S
Secure Thoughts
The Cloudflare Blog
美团技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

GoodBoyboy 's Blog|惬意小屋-点滴记忆

新设计了一个Astro主题 Cap,一个基于PoW的自托管验证码系统 公益服务迁移通知 一种基于argon2id算法与shamir算法的内存PoW(工作量证明)解密游戏 记忆里的屋子(一) Ubuntu 26.04 Btrfs+LUKS2安装 主域名服务不稳定通知 腾讯元宝客户端实习二面凉经 腾讯元宝客户端实习一面面经 对越来越多AI博文的看法 GoodBoyboy Blog、Talk联动成功 只有失去了才会懂得珍惜,但幸好我还没有失去 滴滴Android客户端一面凉经 GoodBoyboy 's Talk上线! Easy Drop——一个基于Gin开发的高性能、轻量级说说平台 Perfect Pic —— 一个基于 Gin 开发的高性能、轻量级图床 尘封了八年的祝福 欢迎OPPO Pad 4 Pro加入设备大家庭 官方Android11 Box系统的OrangePi 3B新增红外模块教程 家里也换成光纤了qwq 姜还是老的辣 布洛芬效果真不错 再见2025,你好2026 Canokey导入S/MIME邮箱证书并使用Thunderbird发送邮件 1.90$申请 WISeID S/MIME 邮箱证书 新购Intel AX210网卡 OpenPGP邮件加密——关于测试邮件握手的思考 疯狂动物城2太好看了(无具体剧透) 进程调度——时间片轮转 效果是真的好,劲也是真的大 不买立省100% 十月小记 新增外设漫步者G1500bar 欢迎招行万事达加入卡包大家庭 博客十周年啦🎉 ESP32 S3开发小结 ESP32 S3外设小记 Arduino+VSCode开发ESP32-S3 EPS32-S3刷入MicroPython EPS32 S3刷入Picokeys Debian13安装Nvidia驱动 现在小孩都这么早熟么。。。 《动物迷城》二周目通关! Bing索引终于恢复了 家里蹲大学开始招生! 家里蹲大学即将建校,欢迎各位莘莘学子来本校深造(doge 骑车去兜风~ OAuth2授权码、客户端凭证、PKCE、设备码授权流程详解 GitHub release以及Git Commit常用模板 实验室生活 阿里云角色SSO对接authentik进行单点登录 白嫖一年Gemini Pro 突然发现自己可能乳糖不耐受? Android第三方Passkey管理器探索 多线程我太爱你了,你个“大可爱” [公告]现评论区已支持使用emoji表情符号😊 Debian GRUB踩坑记——out of memory 为Debian KDE更换显示字体为思源黑体 Debian补全办公常用字体 Debian12 KDE Edge输入法问题 Debian KDE Plasma 5调整外接显示器亮度 Debian开玩Minecraft Debian KDE使用指纹传感器验证身份
基于OIDC实现Authentik与阿里云RAM角色的联合身份认证
GoodBoyboy · 2025-07-14 · via GoodBoyboy 's Blog|惬意小屋-点滴记忆

前言

OIDC的教程来了😁

在阿里云,OIDC一般不用于登录WEB控制台,而是用于程序化访问,例如CLI、SDK或自定义应用程序,工作流程完全由API驱动,不过可以通过构造免登录URL来进行登录。

OIDC 复杂很多,这里仅按照最基础的能完成授权的流程写,具体项目请根据具体实际情况设置。
部分Authentik操作这里不详细写了,可以去看看之前写的阿里云角色SSO对接authentik进行单点登录

创建 Authentik Provider

在Authentik的控制台侧边栏Applications->Providers中创建provider,类型选OAuth2/OpenID Provider

名称:自填
授权流程:自选或者自定义

客户端 ID客户端 Secret自动生成,记不记无所谓,后面也看得到

重定向 URI/Origin(正则):这里因为并不需要使用到重定向,填个http://localhost就行

签名密钥:这里用Authentik默认的或者自己生成都行,生成操作看之前的文章

高级协议设置

作用域:同样是先不用管,待会再回来映射

然后点击完成创建。

创建 Authentik Application

下方有一处勘误,已修改

其实OIDC创不创建都无所谓,没啥用,不是授权入口,只是创建一个provider不会显示警告而已

这里可以通过给application授权指定组来实现权限控制(当然你也可以自己写策略),非该组内用户访问会出现Request has been denied.

如果不做权限控制,任何人都可以通过构造认证链接发起请求

在同级菜单下的Applications中点击创建名称slug随便取,用不到

提供程序选择刚刚创建的provider即可

创建身份提供商

打开阿里云控制台,进入RAM 访问控制

找到集成管理->SSO管理

选择角色SSOOIDC

身份提供商名称:顾名思义,按照下面灰色字要求填就行

然后回到Authentik,点击创建的provider,可以在右边看到一系列URL以及左边的客户端 ID

这里我们需要客户端 ID以及OpenID 配置颁发者的值

回到阿里云,颁发者 URL填写OpenID 配置颁发者的值,客户端 ID就填客户端 ID的值

填完后会有个获取指纹按钮,这个获取的是你OIDC Endpoint的SSL证书的CA的指纹,正式环境请仔细对比

完成创建即可

创建角色

和前面那篇文章一样,想要扮演什么角色就创建什么角色,角色创建这里不重复写了,详情参考前面的文章,只是在身份提供商类型选项那里从SAML换成OIDC即可

然后选择刚刚创建的身份提供商

完成创建后会自动生成好信任策略,当然如果你有自定义的验证需求,可以自定义,这里就采用默认

添加映射

阿里云要求Id Token中包含audiss

aud:客户端ID的值
iss:颁发者 URL(OpenID 配置颁发者)的值

来到Authentik的Customization->Property Mappings,创建两个map用来映射这俩值,类型都选择Scope Mapping

名称:自填
作用域名称:aud或者iss
表达式:python语言,我这里为了简单就直接返回了这俩值,自己可以根据官方文档表达式章节自定义怎么返回

1
2

return "xxxxxxxxxxx"

然后回到provider,编辑一下,在作用域中将自定义的两个map添加进去,默认的openid和email什么的可以留着

小插曲:大致流程

从Authentik获取Id Token,用Id Token在阿里云拿到STS Token,然后用STS Token换SigninToken,用SigninToken进行登录

获取Id Token

这里就是标准的OAuth2流程,本教程采用Authorization code授权流程,其他流程请自行探索

首先构造授权请求页面URL

在provider中可以看到授权 URL

这个就是Base Url

给Base Url拼接下面几个参数

下方有一处勘误,已修改

response_type:固定值code(为Authorization code授权流程的固定值)
client_id:顾名思义,客户端ID
redirect_uri:和创建provider时填的保持一致,上文填的是http://localhost这里就拼这个值
state:~~防重放攻击的,可选,~~防止跨站请求伪造攻击,自己去查阅相关资料

拼接完成后访问该url即进入授权页面,完成登录后页面将重定向到redirect_uri所填的值

这里就是http://localhost,后面会接codestate,这里我们需要使用code来换取Id Token

这里就需要使用POST请求,请求地址在provider中可以看到,名叫令牌 URL

然后向该地址POST如下参数

Tips:Content-Type 必须是 application/x-www-form-urlencoded

grant_type:该流程中为authorization_code
code:上面的code值
redirect_uri:同理,之前填的redirect_uri值
client_id:客户端ID
client_secret:客户端 Secret(编辑一下provider就看得到了)

发起POST请求后,会返回一个json,包含access_token,和id_token

正常情况下我们会需要使用access_token,而id_token是给本地客户端用的,但是这里阿里云正是需要鉴别用户身份,因此需要使用Id Token而不是access_token

获取STS Token

这里暂时没找到阿里云的Endpoint,貌似只用用阿里云的SDK请求?

文档->AssumeRoleWithOIDC - OIDC角色SSO时获取扮演角色的临时身份凭证

文档里面有个调试按钮,可以方便进行请求

OIDCProviderArnRoleArn文档也写了在哪看,找不到也可以去看看之前的那篇文章

OIDCToken就是上文的Id Token

RoleSessionName用来让阿里云记录是谁在访问,用于日志审计,可以填用户邮箱之类的

然后就是发起调用

返回示例阿里云文档里有,这里就不展示了

获取SigninToken

这里同样是构造URL

Base Url为:https://signin.aliyun.com/federation

拼接下面参数:

Action:固定值GetSigninToken
AccessKeyIdAccessKeySecretSecurityToken:上文返回的json里有

发起Get请求后就会返回一个包含SigninToken的json

拼接免登录URL

Base URL同样是https://signin.aliyun.com/federation

拼接下面参数:

Action:固定值Login
LoginUrl:登录失效跳转的地址
Destination:实际要访问的目标页面
SigninToken:上文json中

Tips:LoginUrl、Destination 和 SigninToken 都需要使用 encodeURL 进行编码处理

访问该拼接的URL即可进入Web控制台

后记

一般获取到STS Token后就可以对阿里云资源进行操作了,只是说要登录的话需要多一步获取SigninToken

终于是写完了,累死我了。。。