SSO Keycloak安装&配置SAML登录AWS Console

2022-01-25 18:23

随着云计算的需求越来越强烈,客户需要高可用的身份管理系统来进行统一的身份管理、访问控制、鉴权和登录。

但在部分区域 (如北京、宁夏、香港) 尚未提供 Amazon Cognito User Pool 或 Amazon SSO 功能,客户无法进行身份管理;同时,客户对于身份管理系统运行在第三方网站存在安全顾虑,更不希望自己从头搭建一套身份管理系统,日后将面临运维的痛苦。

我们今天要介绍的方案,可以帮助客户在 Amazon Web Services 上把已经建立好的用户 (user) 或身份 (identity) 带上云端来使用,并兼顾安全与管理的便利,让客户加速创新进入市场。跟我一起来了解吧!


所以 这套方案的核心是?

这套方案运用到的是一款名为Keycloak的软件

它是一款开源的身份与访问控制软件提供单点登录 (SSO) 功能,支持 OpenID Connect、 OAuth 2.0、SAML 2.0 标准协议。Keycloak 提供可自定义的用户界面,用于登录、注册和账户管理等。客户可将其集成到现有的 LDAP 和 Azure Active Directory 服务器中,还可以将身份验证委派给第三方身份提供商。

Keycloak支持OpenJDK、Docker、Kubernetes、Openshift等多种方式部署.

本文档主要指引如何在AWS EC2上通过OpenJDK部署单机模式的Keycloak软件;如您需要以高可用的集群模式部署KeyCloak,请联系我们。

操作前准备

1. 创建好自己的VPC,有公有子网、私有子网;

2. 启动一台EC2;

3. 最佳实践:Keycloak软件安装的机器放置在私有子网中,通过ALB+Route53对外提供服务,域名有证书支持。

实验步骤

1. 在EC2上部署Keycloak软件;

2. 在AWS IAM和Keycloak上互相配置SAML协议;

3. 连接测试。


配置Keycloak环境



01

Keycloak安装

· 安装JDK 1.8

sudo yum install -y java-1.8.O-openjdk java-1.8.0-openjdk-devel

· 下载Keycloak

wget

https://github.com/keycloak/keycloak/releases/download/15.0.2/keycloak-15.0.2.zip

02

Keycloak启动与配置

· 进入文件夹

cd keycloak-15.0.2/bin

· 添加管理员账号

./add-user-keycloak.sh -r master -u admin -p admin

-r 后为Keycloak的Realm名称(全小写),本篇都设置为master;

-u 后为管理员用户名,-p 后为管理员密码。

· 重启服务使管理员添加生效

./jboss-cli.sh --connect command=:reload

· 启动服务(默认只能本机访问,使用 0.0.0.0 允许外部访问)

./standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0

03

Https访问配置

· 默认Keycloak使用8080端口,但在下一个章节中获取IDP descriptor会需要Https访问,解决方案如下:

1. 配置ALB侦听443端口,后端目标组绑定8080,实现Https 443跳转Http 8080;

2. 在Route 53上配置一个域名,Alias记录到ALB;

3. 在ACM为该域名申请证书,并将证书绑定在ALB上。

04

访问Keycloak管理员界面

· 通过以下链接来访问您的Keycloak管理员界面:

http://<服务器IP或Domain>:8080/auth/admin

05

(可选)SSL配置

当完成了上述步骤,您可能发现无法登录Keycloak;或是在下一个章节中会出现不能正常获取IDP descriptor的问题;请完成这部分的可选步骤,关闭Keycloak的SSL以解决问题。

1. (可选)在LocalHost中使用管理员身份登陆

./kcadm.sh config credentials --server http://localhost:

8080/auth --realm master --user admin

2. (可选)管理员强制关闭SSL

./kcadm.sh update realms/master -s sslRequired=

NONE

3. (可选)重启服务

./jboss-cli.sh --connect command=:reload



配置AWS IAM


01

下载KeycloakdescriptorXML文件

· 访问以下链接,获取Keycloak的descriptor XML文件

https:///auth/realms//protocol/saml/descriptor

如遇到提示需要Https访问,请参阅上一章节的步骤3、步骤5!

02

创建AWS IAM 身份提供商

1.进入AWS IAM控制台,添加身份提供商,上传descriptor XML文件


2.保存下身份提供商的ARN


03

创建AWS IAM Role

1.进入AWS IAM控制台,

创建一个IAM Role,并授予所需的权限


2.保存下Role的ARN,之后会用到



配置Keycloak


01

配置Clients

1.下载AWS的saml-metadata.xml文件

https://signin.aws.amazon.com/static/saml-metadata.xml

2.新建Clients,上传xml文件,保存


3.配置 IDP Initiated SSO URL Name:amazon-aws

4.配置 Base URL:/auth/realms//protocol/saml/clients/amazon-aws


5.添加角色

角色名称,使用刚才保存下来的两个ARN,中间加英文逗号分隔:

<Role-ARN>,<Provider-ARN>

构建出来的Role Name形如:

arn:aws:iam::<账号ID>:role/<角色名称>,arn:aws:iam::<账号ID>:saml-provider/


6.在Scope中关闭Full Scope Allowed


7.重要:在Client的Mappers中添加三条(按照图上内容填写)

1)Session Role

https://aws.amazon.com/SAML/Attributes/Role

2)Session Name

https://aws.amazon.com/SAML/Attributes/RoleSessionName

3)Session Duration

https://aws.amazon.com/SAML/Attributes/SessionDuration

8.删除Client Scope的默认Scope


02

配置User、User Group

1.在Keycloak中创建用户、修改密码


2.创建用户组,该组中的用户将可以通过SSO登录AWS


3.为用户组配置角色映射


4.将用户加入组



访问测试


通过以下链接访问AWS控制台:

https:///auth/realms//protocol/saml/clients/amazon-aws

如果访问不通,将Https改为Http尝试:

http:///auth/realms//protocol/saml/clients/amazon-aws



希望云小编的教程有帮助到你!

如果有技术性的问题,欢迎联系我们解决

• end •


云代理伙伴
扫描关注微信公众号
获取更多云端资讯
联系我们
——

模板表单-2(1)

  • 姓名*

  • 电话*

  • 邮箱*

  • 职称*

  • 公司*

  • 地址*

  • 需求*

  • * 点击提交,即表示您同意我们存储和处理您提交的个人信息,以向您提供所请求的内容,该信息仅供公司提供服务使用。您的信息受到相关法律的安全保护。