专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

阿里云集成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文件中

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

41_2.png

41_3.png

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

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

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

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

41_7.png
6、 Keycloak管理后台创建相应的用户

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

41_8.png

效果演示

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

41_9.png
2、 跳转Keycloak登录页进行登录

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

41_11.png

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

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

配置步骤

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

41_12.png
2、 角色SSO中新建身份提供商

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

41_13.png
3、 创建RAM角色

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

41_14.png

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

41_16.png

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

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

41_18.png
6、 Keycloak后台创建相应的用户

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

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

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

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

41_21.png

41_22.png

41_23.png

效果演示

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

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

41_25.png

总结

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

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

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

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

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

联系我们联系我们