keycloak介绍
Keycloak
是一款由Red Hat
开源社区开发的开放源代码的身份和访问管理解决方案,它提供了安全的单点登录(SSO
)、多因素身份验证、社交登录和基于角色的访问控制等功能Keycloak
基于OAuth 2.0
和OpenID Connect
协议,并支持SAML 2.0
,可与多种身份验证和授权方案集成,如LDAP
、Active Directory
、数据库等Keycloak
提供了RESTful API
,可与其他应用程序集成,以实现强大的身份验证和访问控制功能Keycloak
还提供了灵活的自定义主题和登录表单,以便根据特定的品牌和样式要求进行定制化。它还提供了分布式架构和高可用性,可适应各种规模的企业级应用程序。- 由于其丰富的功能和灵活的可扩展性,
Keycloak
已成为开源社区中最受欢迎的身份和访问管理解决方案之一
keycloak的docker版本安装使用
- 我们的平台项目使用的是
Spring Cloud
微服务架构,权限验证选择的就是keycloak
keycloak
使用很方便,我们可以下载适合自己系统的Keycloak
安装包并解压,然后启动Keycloak
服务器即可- 也可以使用
docker
版本部署启动,我们采用的就是这种方式 - 如果已有镜像可以直接
docker run
命令启动keycloak
;或者有镜像tar压缩包,可以docker load
装载进来再使用 - 如果没有,也没关系,我们可以很方便的从互联网获取
- 使用
docker search keycloak
搜索相关镜像,如下图所示,然后直接用第一个
- 使用
docker pull jboss/keycloak
下载镜像,默认最新版本,也可以指定版本号
- 现在就可以
docker run
或者使用docker-compose
启用服务了,下面给出一个docker-compose
配置
keycloak:
image: jboss/keycloak:16.1.0
container_name: keycloak
command:
[
'-b',
'0.0.0.0',
'-Dkeycloak.migration.action=import',
'-Dkeycloak.migration.provider=dir',
'-Dkeycloak.migration.dir=/opt/jboss/keycloak/realm-config',
'-Dkeycloak.migration.strategy=IGNORE_EXISTING',
'-Djboss.socket.binding.port-offset=1000',
'-Dkeycloak.profile.feature.upload_scripts=enabled',
]
volumes:
- /etc/localtime:/etc/localtime
depends_on:
- postgresql
environment:
- KEYCLOAK_USER=admin
- KEYCLOAK_PASSWORD=admin
- DB_VENDOR=postgres
- DB_ADDR=postgresql:5432
- DB_DATABASE=keycloak
- DB_USER=postgres
- DB_PASSWORD=xxxxxxx
- TZ=Asia/Shanghai
ports:
- 9080:9080
restart: always
keycloak
服务启动起来后,我们的应用程序可以加上相关配置,后面的认证权限管理,就走keycloak
了
操作界面
keycloak
作为一款成熟的身份认证解决方案,它自带一套操作界面,而且操作起来也很简单- 使用
ip:9080
可以访问keycloak
操作界面,登录后可进行操作,配置样式、操作时间等
- 登录后的界面是这样的
超时时间设置
- 登录超时时间是我们平台系统需要关注的一个指标,这个牵涉到信息安全问题
- 超时时间设置,我们可以根据需要自定义设置。如果不自定义设置,使用默认超时时间也是可以的,
keycloak
的默认超时时间也比较合理 - 对于自定义超时时间设置,我们主要关注两个指标,
SSO会话空闲时间
与SSO会话最长时间
SSO
会话空闲时间(ssoSessionIdleTimeout
):设置会话在过期之前可以空闲的时间长度,当会话过期时 Token 和浏览器会话都会被设置为无效 (保活,操作则继续延迟有效期,默认半小时,如果半小时不操作,则会失效,需要重新登录)SSO
会话最长时间(ssoSessionMaxLife
):会话的最大时间长度,当会话过期时Token
和浏览器会话都会被设置为无效(最长时间,登录后允许的最长时间,默认10小时,超出后token
失效,需要重新登录)- 修改这两个参数,就可以控制登录时间
- 这个设置,我们可以直接在keycloak自带的管理界面上操作,选择
Tokens
选项卡,就可以看到这2个选项,设置保存即可 - 亲测有效,有需要的可以试一试