Aws Console With Saml Idp Keycloak As Sample

如何使用SAML连接第三方IdP登陆AWS Console

以keycloak为例

安装 keycloak

参考keyloak文档

配置 keycloak

总体流程:

  1. 下载aws saml meta,在keycloak内添加client
  2. 修改、配置client
  3. 在 aws 内,添加IdP,saml meta来自keycloak realm
  4. 在 aws 内,配置可以供idp使用的role
  5. 在 keycloak 内,配置 client role/user role

创建realm

realm是keycloak的一个用户域。 具体创建参考 keycloak 文档

创建 client

client 使用 SAML/OpenID/OAuth 等第三方应用,使用import功能,如下图

AWS SAML metadata可以从 AWS Saml Metadata 下载。

Add Provider in AWS

调整 client 属性

设置 IdP initiated SSO URL name,最终的登陆地址与之有关,为:{server-root}/realms/{realm}/protocol/saml/clients/{client-url-name}

Set init URL

配置AWS

现在 对应realm 的 saml-metadata.xml: download keycloak realm saml meta

然后,使用下载的saml-metadata.xml,在AWS中添加 IdP Add Provider in AWS

创建Role

在AWS为 IdP 创建 Role,Role trust IdP选择刚导入的keycloak。

需要记住:

  1. 刚导入的 IdP ARN
  2. 刚新建的 Role ARN

keycloak中,role格式为 Role ARN,IdP ARN, 如图。

然后, 在 keycloak 的client中,创建对应的Role: Add Role in keycloak

创建keycloak用户并绑定role

创建用户 Add User in keycloak

Add Role for user in keycloak

分配在keycloak client中创建的role Add Role for user in keycloak

(optional)修改属性mapping

如果不幸,出现aws报错 ,如 Error: Your request included an invalid SAML response. To logout, click here.,需要进行如下属性修改

在 clientscope tab,编辑 aws 属性 enter client scope

删除 Role, RoseSessionName 属性,然后添加如图的mapping:

Add Role Mapper

Add Session Name mapper

Written on April 3, 2024