一 、概要
Keycloak 是适用于现在应用程序和服务的开源身份和访问管理的解决方案。Keycloak 提供用户联合、强身份认证、用户管理及细粒度权限管理等功能,以求客户在最小的成本下向应用程序和服务添加身份验证等功能。
(1) OIDC
OIDC(OpenID Connect)在OAuth 2.0上构建了一个身份层,是一个基于OAuth 2.0协议的身份认证标准协议。OIDC使用OAuth 2.0的授权服务器来为第三方客户端提供用户的身份认证,并把对应的身份认证信息传递给客户端,且可以适用于各种类型的客户端(例如服务端应用、移动APP、JavaScript 应用),且完全兼容OAuth 2.0协议。
(2)SAML
SAML(Security Assertion Markup Language)是一种用于安全性断言的标记语言,目前的最新版本是2.0,是Web浏览器用来通过安全令牌启用单点登录(SSO)的标准协议。
(3)OIDC协议与SAML 2.0协议之间的相同点与不同点:
协议 | 相同点 | 不同点 |
OIDC |
都是实现单点登录的认证协议; 都是目前安全且成熟的技术标准; 都依赖具有标准重定向功能的软件实现跳转(浏览器)。 |
以JSON格式传输用户数据; 2007年最终确定并发布(来自维基百科); 相对轻量级; 通过断言验证用户。 |
SAML2.0 | 2005年被批准为OASIS标准协议(来自维基百科); 以XML格式传输用户数据; 相对重量级; 通过JWT令牌进行验证,支持去中心化身份验证。 |
概要引用出处: 操作指南|JumpServer与Keycloak集成对接 - 技术博客 – FIT2CLOUD 飞致云
二 、准备部署好KeyCloak.
(1)keycloak的官网地址:KeycloakKeycloak is an open source identity and access management solutionhttps://www.keycloak.org/
执行这条命令
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:21.0.2 start-dev
执行完之后,登录IP地址访问 https://ip:8080
默认管理员账号密码是 admin admin
三、在机器中执行以下命令
openssl genrsa -out server.key 2048 # 这个生成的是私钥
openssl req -new -x509 -days 3650 -key server.key -out server.crt -subj "/C=CN/ST=mykey/L=mykey/O=mykey/OU=mykey/CN=domain1/CN=domain2/CN=domain3" # 这个是证书
把生成的私钥和证书,保存下来。
四、登录JumpServer ,在认证设置中,选择SAML2。
将刚刚保存的私钥以及证书,分别上传到SP秘钥和SP证书中。点击下方提交后查看。
右击另存为,命名随便,我命名为1.xml,文件等会会用到。
五、配置keycloak
(1)点击左侧创建Create Realm,命名为JumpServer-SAML2
(2)按照图示,新建一个 client,在这边选择导入,把刚刚保存的1.xml文件导入进来。
(3)导入完成之后点击我们刚开始创建的realm。
(4)根据图示,以此设置
(5) 根据图示,创建一个新的Mappers。
注意这两个的映射关系。
(6)根据图示创建用户
此时创建的用户名(Username)以及密码,是登录jumpserver所用到的账号及密码。 我设置的账号jms 密码123456
(7)点击左侧的Realm settings,点击红色框查看。
(8)将上述地址栏信息填入到 JumpServer SAML认证中。
六、点击登录JumpServer,选择登录方式为SAML
显示登录成功。