Keycloak 基本功能

Stella981
• 阅读 1084

Keycloak是一个致力于解决应用和服务身份验证与访问管理的开源工具。可以通过简单的配置达到保护应用和服务的目的。

用户管理

你的应用不需要开发登录模块,验证用户和保存用户。Keycloak开发了用户管理,登录,注册,密码策略,安全问题,二步验证,密码重置等功能。登录,注册界面所需字段都是可配置,可自定义的。

用户角色,权限管理功能,用户组功能。用户sessions管理。

单点登录/登出(Single-Sign On/Out)

用户通过Keycloak验证身份而非应用本身。当用户通过Keycloak的身份验证后,访问其他应用则不需要登录。

登出同样适用。Keycloak也提供单点登出。

Kerberos对接

如果用户验证是通过Kerberos(LDAP或Active Directory)的方式,在登录工作站后,也能自动的通过Keycloak验证,而不需要再次提供用户名密码。

身份代理和社交应用登录(Identity Brokering and Social Login)

Keycloak 基本功能

在后台管理配置社交应用可以实现第三方应用授权。

Keycloak也能通过现成的OpenID Connect或SAML2.0 Identity Providers验证用户。只需要在后台配置即可。

用户联盟(User Federation)

Keycloak 基本功能

Keycloak有内置的连接LDAP或AD的功能。你也可以实现自己的IdP,比如用户存储在关系型数据库。

客户端适配器(Client Adapters)

适配器让保护应用和服务变得很简单。已经有很多平台和编程语言的适配器。如果没有与你的平台相适应的适配器,别担心,Keycloak是建立在标准的协议之上,你可以使用任何OpenID Connect Resource Library或SAML 2.0 Service Provider library来实现。

你可以使用代理服务器来保护你的应用,那就根本不需要修改应用了。

后台管理(Admin Console)

Keycloak 基本功能

通过后台管理,管理员可以管理Keycloak所有方面的配置。可以开启关闭多种功能,配置身份代理和用户联盟。可以定义应用和服务,定义细粒的授权策略。管理用户,包括角色,权限,sessions等。

账户管理界面(Account Management Console)

Keycloak 基本功能

用户可以通过账户管理界面管理自己的信息,更新,设定二次验证。用户也可以管理自己的sessions。

标准协议(Standard Protocols)

Keycloak 基本功能

Keycloak是基于标准协议开发的,支持OpenID Connect, OAuth 2.0和SAML。

授权服务(Authorization Services)

如果基于role的授权无法满足需求,Keycloak提供细粒的授权服务。允许你通过后台管理所有的服务,可以定义满足你的需求的策略。

Admin REST API

Keycloak提供REST API用于后台管理,包括对Clients,Groups, Users, Roles等一系列资源的管理。这就为应用与Keycloak交互提供可能,应用可以在业务中实现对用户角色权限的增减。

自定义主题

Keycloak为web页面和email信息提供主题支持,更换符合公司产品风格的样式,可以自定义内容包括:

  • 账户管理界面
  • 后台管理界面
  • 邮件
  • 登录界面
  • 欢迎界面

自定义用户字段(Custom User Attributes)

我们可以在用户属性页添加自定义属性,并在注册界面或用户信息页展示。

集群环境(Clustering)

Keycloak支持集群环境,保障Keycloak的稳定运行,减小服务器压力。集群的搭建可以选择standalone模式或domain模式。domain模式经官方提供的文档使用软件负载均衡已经搭建成功。

服务器缓存(Server Cache)

Keycloak有两种缓存,一种缓存数据库内容到内存,用以减少获取数据的时间,包括realm, client, role和用户元数据。这种缓存是本地缓存,本地缓存是不会在集群环境中复制的。如果数据被更新了,一个失效消息会发送给剩下所有的节点服务器,用于更新缓存。当然有的缓存可以支持集群,需要告诉集群服务器,将特定的条目从本地缓存中移除。
另一种缓存用于处理用户sessions,离线tokens以及跟踪登录失败次数,用于检测网络攻击。这种缓存是临时的,只在内存中保存,但是也可以复制到集群环境中。

HTTPS/SSL

Keycloak支持HTTPS协议传输,这也是官方推荐的方式。不过实际产品为了安全和负载均衡,可以考虑反响代理,对代理服务器做SSL,代理服务器与Keycloak交互仍使用HTTP协议。

服务提供者接口(Service Provider Interfaces)

Keycloak设计为包括大多数使用场景,但也支持定制化。Keycloak设计了SPI来允许开发者实现自己的服务提供者。Keycloak可用的SPI有Connections JPA,Email Sender,Email Listener,Login Protocol,Realm等。

扩展服务器(Extending Server)

Keycloak SPI框架提供实现或覆盖已有的providers。Keycloak也提供扩展核心功能的方式,包括:

  • 增加自定义REST服务
  • 增加自定义SPI
  • 增加自定义JPA实体到Keycloak数据模型中

验证身份SPI(AUthentication SPI)

Keycloak自带不同的验证机制:kerberos, 密码和一次性密码。这些机制可能无法满足你的需求,你可能会增加自己的验证机制。Keycloak提供一个验证身份SPI供创建新的插件时使用。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
mysql用户
1\.学会能按着需求创建一个帐号2\.知道连接字符串是什么样3\.密码密码怎么恢复mysql用户权限介绍mysql用户管理 !(https://oscimg.oschina.net/oscnet/368d3c1e00a0a9515545c2962660a27a080.png)!(https://oscimg.oschin
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这