解决登录与SSO的开发痛点:Keycloak快速部署与最简单登录验证教程
创作时间:
作者:
@小白创作中心
解决登录与SSO的开发痛点:Keycloak快速部署与最简单登录验证教程
引用
CSDN
1.
https://m.blog.csdn.net/m0_70878103/article/details/144785915
言简意赅的讲解Keycloak解决的痛点
Keycloak 是一个开源的身份和访问管理工具,提供单点登录(SSO)、用户管理、身份验证、授权等功能。它支持标准的身份协议如 OAuth2.0、OpenID Connect(OIDC)和 SAML 2.0,非常适合集成到现代微服务架构中。
最简单的 Keycloak 登录验证示例
在 Keycloak 中,最简单的登录验证方式是通过其提供的 token 接口,通过 POST 请求验证用户登录信息并获取令牌。以下是一个基于 Keycloak 的最小实现示例:
步骤 1:启动 Keycloak 服务
- 启动 Keycloak,并创建一个
Realm
(领域)。
- 创建一个
Client
(客户端),比如命名为
my-app
,设置协议为 OIDC。
- 在该 Realm 下创建一个用户,设置用户名和密码。
步骤 2:调用 Token 接口进行验证
Realms对应的控制台
http://<keycloak-server>/realms/<realm-name>/account
使用
curl
或 HTTP 客户端工具调用 Keycloak 提供的 Token 接口:
curl -X POST "http://<keycloak-server>/realms/<realm-name>/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password" \
-d "client_id=<client-id>" \
-d "username=<username>" \
-d "password=<password>"
示例代码(Python 示例)
import requests
def keycloak_login(keycloak_url, realm, client_id, username, password):
url = f"{keycloak_url}/realms/{realm}/protocol/openid-connect/token"
data = {
"grant_type": "password",
"client_id": client_id,
"username": username,
"password": password
}
response = requests.post(url, data=data)
if response.status_code == 200:
print("Login successful")
print("Access Token:", response.json()["access_token"])
else:
print("Login failed", response.json())
# Example usage
keycloak_login(
keycloak_url="http://localhost:8080",
realm="myrealm",
client_id="my-app",
username="testuser",
password="testpassword"
)
Keycloak 的功能详解
Keycloak 的功能主要分为以下几个部分:
- 单点登录(SSO)
- 用户登录一次后,即可访问所有已配置的应用,无需再次登录。
- 支持标准协议(OIDC、OAuth2.0、SAML)实现互通。
- 用户管理
- 提供用户注册、账号激活、密码恢复等功能。
- 用户可以通过 Keycloak 提供的 UI 自助修改个人信息。
- 身份认证与授权
- 支持多种认证机制(用户名/密码、OTP、社交登录等)。
- 提供基于角色和属性的精细化权限控制。
- 多租户支持
- 通过 Realm 隔离不同的租户,每个 Realm 拥有独立的配置。
- 集成支持
- 内置适配器和 API,可以方便地集成到 Java、Node.js、Spring 等应用中。
通过 Docker 部署 Keycloak
使用Docker快速部署 Keycloak 是一种高效的方法,以下是部署步骤:
步骤 1:准备 Docker 环境
确保已安装 Docker,并启动 Docker 服务。
步骤 2:拉取 Keycloak 镜像
docker pull quay.io/keycloak/keycloak:latest
步骤 3:运行 Keycloak 容器
docker run -d --name keycloak \
-p 8080:8080 \
-e KEYCLOAK_ADMIN=admin \
-e KEYCLOAK_ADMIN_PASSWORD=admin \
quay.io/keycloak/keycloak:latest start-dev
- KEYCLOAK_ADMIN
和
KEYCLOAK_ADMIN_PASSWORD
用于设置管理员账号和密码。 - start-dev
是开发模式,适合本地开发和测试。
步骤 4:访问 Keycloak 控制台
浏览器访问
http://localhost:8080
,使用上面设置的管理员账号登录。
Keycloak 的集成方法
Keycloak 提供多种集成方式,可以根据应用的开发语言和框架选择适合的方案。
1.前端与 Keycloak 集成
通过 Keycloak 的 JavaScript Adapter 实现前端集成:
- 安装依赖:
npm install keycloak-js
- 初始化 Keycloak:
const keycloak = new Keycloak({
url: 'http://localhost:8080/',
realm: 'myrealm',
clientId: 'my-app'
});
keycloak.init({ onLoad: 'login-required' }).then(authenticated => {
if (authenticated) {
console.log('User authenticated');
}
});
2.后端与 Keycloak 集成
使用 Keycloak 提供的 REST API 或适配器。
使用 Spring Boot 集成:
- 添加依赖:
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>21.0.0</version>
</dependency>
- 配置
application.yml
:
keycloak:
realm: myrealm
auth-server-url: http://localhost:8080/
resource: my-app
public-client: true
principal-attribute: preferred_username
- 添加安全配置:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/public/**").permitAll()
.anyRequest().authenticated();
}
}
总结
Keycloak 是一个功能强大的 IAM 工具,支持多种协议和认证方式,能够快速集成到不同的技术栈中。通过本文,你可以快速启动 Keycloak 服务,实现最简单的登录验证,并了解如何通过 Docker 部署和在前后端应用中集成它。
通过上述内容,你就已经基本理解了这个方法,基础用法我也都有展示。如果你能融会贯通,我相信你会很强
热门推荐
股市中的五朵金花指什么
专家经验:消息队列要怎么选型? 看这一篇就够了
【机器学习】深入探索机器学习:线性回归算法的原理与应用
佐治亚理工《Part B》:人工智能/机器学习在高性能复合材料中的应用
Excel坐标轴范围设置完整指南:从入门到精通
笛子和箫,到底有什么区别?看完涨知识了!建议收藏
开一个200平的加油站,需要投资多少钱?一年又能赚多少钱?
超级详细的 VirtualBox 虚拟机安装及入门教程
姜维与张郃:三国时期的两位杰出将领之比较
PDF怎么压缩得又小又清晰?5种PDF压缩方法
特殊工种提前退休条件是什么
PS5存储空间管理指南:硬件扩展与高效设置技巧全解析
酸性土壤改良的最佳方法 最佳方法与实践
专家警示:理发过程中的艾滋病感染风险,真相与防范须知
如何高效进行需求收集?掌握这些技巧让你事半功倍
2025年地坛庙会:多彩舞台与互动体验打造当代民间年俗盛典
丰田汉兰达仪表盘故障灯图解,汉兰达指示灯图解大全
绿萝养护全攻略:轻松应对绿萝打蔫问题
工伤认定争议怎么办?女工超50岁工伤赔偿全攻略
担保资金的作用和管理方式是什么?这种作用和管理方式如何降低风险?
别再羡慕了!最高级的贵气感,原来可以这样培养
了解如何最大限度地延长太阳能电池板的使用寿命
八字中辰土的含义 八字辰土多解析
如何区分双眼皮、内双与外双?双眼皮的类型有哪些?
签兼职合同合法吗?全面解析兼职工作关系的法律效力与风险防范
猫猫晕车怎么办 猫咪晕车的几大表现
老牌经济特区汕头的经济增长之困:工业乏力,2024年GDP增速全省最低
土豆冬季种植技术
【以案释法】拒绝校园霸凌 保护少年的你
气虚血不足吃什么?5种常见食材帮你补回活力