专注于 JetBrains IDEA 全家桶,永久激活,教程
提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,等工具的永久激活

阿里云集成Keycloak实现SSO单点登录

前面的文章讲述了如何将自己开发的应用集成Keycloak的示例,那对于现有的一些三方的系统和服务,是否也能够接入Keycloak实现统一的身份认证管理呢?答案是肯定的,当然前提是三方的系统和服务本身支持OpenID ConnectOAuth 2.0SAML 2.0这样的协议。那么阿里云需要怎么才能接入到Keycloak中呢?本文便讲述具体的集成配置方法。

阿里云SSO功能说明

阿里云官方文档有如下描述:

阿里云支持基于SAML 2.0的SSO(Single Sign On,单点登录),也称为身份联合登录。

所以我们要想阿里云接入Keycloak,那就只需要在Keycloak进行相应的SAML 2.0的配置。首先我们先来了解下SAML相关的概念。

SAML基本概念

  • 身份提供商(IdP):一个包含有关外部身份提供商元数据的RAM实体,身份提供商可以提供身份管理服务。本例中指Keycloak。
  • 服务提供商(SP):利用IdP的身份管理功能,为用户提供具体服务的应用,SP会使用IdP提供的用户信息。本例中指阿里云。
  • 安全断言标记语言(SAML 2.0):实现企业级用户身份认证的标准协议,它是SP和IdP之间实现沟通的技术实现方式之一。SAML 2.0已经是目前实现企业级SSO的一种事实标准。
  • SAML断言(SAML assertion):SAML协议中用来描述认证请求和认证响应的核心元素。例如:用户的具体属性就包含在认证响应的断言里。
  • 信赖(Trust):建立在SP和IdP之间的互信机制,通常由公钥和私钥来实现。SP通过可信的方式获取IdP的SAML元数据,元数据中包含IdP签发SAML断言的签名验证公钥,SP则使用公钥来验证断言的完整性。

阿里云SSO的方式

阿里云提供以下两种基于SAML 2.0协议的SSO方式:

  • 用户SSO:阿里云通过IdP颁发的SAML断言确定企业用户与阿里云RAM用户的对应关系 。企业用户登录后,使用该RAM用户访问阿里云。
  • 角色SSO:阿里云通过IdP颁发的SAML断言确定企业用户在阿里云上可以使用的RAM角色。企业用户登录后,使用SAML断言中指定的RAM角色访问阿里云。

这2种SSO的方式的区别及使用场景可参考官方文档,这里简单总结下最根本的区别:

  • 用户SSO:需要在阿里云及Keycloak同时创建用户才可实现SSO登录功能,SAML配置相对较简单
  • 角色SSO:只需在Keycloak中创建用户便可直接登录阿里云,阿里云中不需要创建用户,SAML配置相对复杂一些

阿里云用户SSO集成Keycloak配置方式

配置步骤

用户SSO的方式需要在阿里云及Keycloak同时创建用户,配置上相对较为简单,具体步骤如下:

1、 登录阿里云RAM访问控制台,下载保存用户SSOSAML服务提供商元数据到本地

> 如下图中https://signin.aliyun.com/saml/SpMetadata.xml?tenantID=XXX这个地址浏览器打开后内容保存到本地`SpMetadata.xml`文件中

![53\_1.png][53_1.png]

2、 使用步骤1中保存的SpMetadata.xml在Keycloak管理后台添加SAML客户端

![53\_2.png][53_2.png]

![53\_3.png][53_3.png]

![53\_4.png][53_4.png]

3、 将Keycloak当前Realm的SAML IDP Metadata保存至本地

> 示例Reaml名为Saml,点击`Realm Settings`菜单中`Endpoints`中的`SAML 2.0 Identity Provider Metadata`链接,可查看具体的IDP Metadata内容,将内容保存至本地`IdpMetadata.xml`文件中

![53\_5.png][53_5.png]

4、 阿里云RAM访问控制后台编辑用户SSO登录设置

![53\_6.png][53_6.png]

5、 阿里云RAM访问控制后台创建相应的用户

![53\_7.png][53_7.png]

6、 Keycloak管理后台创建相应的用户

> 注意:用户的邮箱必须与步骤5中的完整登录名称完全一致

![53\_8.png][53_8.png]

效果演示

1、 访问阿里云SSO登录地址,点击使用企业账号登录

![53\_9.png][53_9.png]

2、 跳转Keycloak登录页进行登录

![53\_10.png][53_10.png]

3、 Keycloak登录成功后跳转至阿里云控制台

![53\_11.png][53_11.png]

阿里云角色SSO集成Keycloak配置方式

角色SSO的方式不需要在阿里云创建用户,不过SAML配置上会相对复杂一些

配置步骤

1、 登录阿里云RAM访问控制台,下载保存角色SSOSAML服务提供商元数据到本地

![53\_12.png][53_12.png]

2、 角色SSO中新建身份提供商

> 元数据文档的获取与用户SSO步骤3的方式相同

![53\_13.png][53_13.png]

3、 创建RAM角色

> 身份提供商选择上一步新建的身份提供商

![53\_14.png][53_14.png]

![53\_15.png][53_15.png]

4、 使用步骤1中保存的SpMetadata.xml在Keycloak管理后台添加SAML客户端

![53\_16.png][53_16.png]

![53\_17.png][53_17.png]

5、 设置IDP Initiated SSO URL Name,这个就是从Keycloak登录阿里云的地址

> 本示例使用本地环境的Keycloak演示,实际请使用生产环境的Keycloak进行配置,生产环境Keycloak部署可参考:[使用Docker在生产环境快速部署Keycloak高可用集群][Docker_Keycloak]

![53\_18.png][53_18.png]

6、 Keycloak后台创建相应的用户

![53\_19.png][53_19.png]

7、 为创建的用户添加自定义用户属性SamlRole

> 配置此用户属性的目的是为了添加SAML断言,SamlRole名字自定,值必须按照特定格式,参照阿里云文档说明:[支持角色SSO的SAML断言][SSO_SAML]

![53\_20.png][53_20.png]

8、 Keycloak中为创建的客户端配置Mappers以添加SAML断言

> 参照阿里云文档说明:[支持角色SSO的SAML断言][SSO_SAML],必须添加`https://www.aliyun.com/SAML-Role/Attributes/Role`以及`https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName`这2个SAML断言

![53\_21.png][53_21.png]

![53\_22.png][53_22.png]

![53\_23.png][53_23.png]

效果演示

1、 访问SSO登录地址并进行登录,即步骤5中配置的IDP Initiated SSO URL

![53\_24.png][53_24.png]

2、 登录成功后跳转至阿里云控制台

![53\_25.png][53_25.png]

总结

本文对阿里云支持的2种SSO方式进行了配置的示例,而现有不少的三方系统提供的SSO都为SAML 2.0协议,实现上比较类似,可参考本文的方法进行相关的配置。Keycloak不仅可以很方便的对内部开发的应用进行集成,同时凭借本身对SAML 2.0协议良好的支持,只需进行少量SAML相关的配置便可以接入三方系统,从而实现内部系统及外部服务统一的用户认证管理功能。

文章永久链接:https://tech.souyunku.com/41799

未经允许不得转载:搜云库技术团队 » 阿里云集成Keycloak实现SSO单点登录

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们