如何将 Azure Active Directory (Azure AD) 作为 SAML IdP 对接到 Keycloak

✅ 一、在 Azure AD 创建 SAML 应用

🔧 1. 登录 Azure 门户

前往 https://portal.azure.com,使用管理员账号登录。

📌 2. 创建企业应用(Enterprise Application)

  • 左侧菜单进入 "企业应用程序"
  • 点击 "新建应用程序"
  • 选择 "从库中创建" → 搜索 "Non-gallery application",起一个名字,比如 Keycloak SAML → 创建。

🔗 3. 配置 SAML 登录方式

  • 进入你刚创建的应用 → 左侧选择 "单一登录" → 选择 SAML

  • 点击第一步【基本 SAML 配置】的编辑图标 ✏️,填写:

    字段
    Identifier (Entity ID) https://<keycloak-host>/realms/<realm-name>
    Reply URL (Assertion Consumer Service URL) https://<keycloak-host>/realms/<realm-name>/broker/<idp-alias>/endpoint

    示例:

    复制代码
    Identifier: https://sso.example.com/realms/demo
    Reply URL: https://sso.example.com/realms/demo/broker/azure-ad/endpoint
  • 保存。


📎 4. 下载 IdP Metadata

在 Azure SAML 设置页面第 3 步,找到:

  • Federation Metadata XML:复制 URL 或下载 XML 文件。

✅ 二、在 Keycloak 中配置 Azure AD 作为 SAML IdP

➕ 添加 SAML IdP

  1. Keycloak 管理后台 → Identity Providers → 选择 SAML v2.0
  2. 填写以下字段:
字段
Alias azure-ad(你自定义的 IdP 别名)
Import from URL 粘贴 Azure 的 Metadata URL,或上传 XML 文件
First Login Flow 可以使用默认的 first broker login,也可以自定义跳过填写资料(见上条)

其他字段通常 Keycloak 会自动填好。

  1. 保存。

👤 映射 Azure 返回的属性

切换到 Mappers 标签,添加如下属性映射(根据 Azure 返回的内容而定):

Mapper Name Mapper Type SAML Attribute Name User Attribute
email Attribute Importer http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress email
first name Attribute Importer http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname firstName
last name Attribute Importer http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname lastName
username Attribute Importer http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name username

Azure AD 默认返回的字段是长 URI 格式。


✅ 三、让 Azure AD 知道 Keycloak 是谁

你可以将以下地址(SP Metadata)发给 Azure 管理员参考:

复制代码
https://<keycloak-host>/realms/<realm-name>/broker/<idp-alias>/endpoint/descriptor

✅ 四、测试登录

用户可以通过以下 URL 自动跳转到 Azure AD 登录:

复制代码
https://<keycloak-host>/realms/<realm-name>/protocol/openid-connect/auth?client_id=<client-id>&redirect_uri=<redirect-uri>&response_type=code&kc_idp_hint=azure-ad

🔄 可选:自定义首次登录行为(跳过填写资料)

可以结合上面提到的:

  • 修改 First Broker Login Flow
  • 映射好用户信息字段

就能避免用户登录后看到"Update Account Info"页面。

相关推荐
编码者卢布10 小时前
【Azure Storage Account】Azure Table Storage 跨区批量迁移方案
后端·python·flask
编码者卢布12 小时前
【Azure Developer】中国区Azure环境中查看用户账号是否可用(accountEnabled)的操作步骤
microsoft·flask·azure
编码者卢布13 小时前
【Azure APIM】如何实现对经过APIM并到达后端服务请求的全链路追踪呢?
python·flask·azure
编码者卢布13 小时前
【Azure Stream Analytic】用 JavaScript UDF 解决 JSON 字段被转成 Record 的关键点
javascript·json·azure
编码者卢布15 小时前
【Azure App Service】部署在应用服务上的WebJob中,为何会多出一个名为“DaaS“的 WebJob呢?
microsoft·azure
晚霞的不甘16 小时前
Flutter for OpenHarmony构建全功能视差侧滑菜单系统:从动效设计到多页面导航的完整实践
前端·学习·flutter·microsoft·前端框架·交互
java1234_小锋17 小时前
【AI大模型舆情分析】微博舆情分析可视化系统(pytorch2+基于BERT大模型训练微调+flask+pandas+echarts) 实战(下)
人工智能·flask·bert·ai大模型
逻极18 小时前
Claude Code实战——打造智能研报 CLI 工具:45分钟零构建智能研报助手CLI,解锁AI编程效率革命
microsoft·ai编程·ai辅助编程·claude code·python实战·cli开发
xixixi7777718 小时前
Prompt脱敏——不损失(或尽量少损失)原文本语义和上下文价值的前提下,防止原始敏感数据暴露给模型服务方、潜在的攻击者或出现在模型训练数据中
人工智能·microsoft·ai·大模型·数据安全·提示词·敏感信息
乔江seven20 小时前
【python轻量级Web框架 Flask 】1 Flask 初识
开发语言·后端·python·flask