解决登录与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 部署和在前后端应用中集成它。
通过上述内容,你就已经基本理解了这个方法,基础用法我也都有展示。如果你能融会贯通,我相信你会很强
热门推荐
年轻人流行去医院“吊脖子”?这些“老颈椎”可不能随便治
美洲杯C组出线分析:东道主美国迎来关键战
唇部护理完全指南:从基础保湿到专业修护,一文掌握护唇秘诀
医院患者身份标识制度
解决Cloudflare 521错误的四种方法
如何教小孩学日语:从零到流利的奇幻之旅
为什么“生理反应”才是爱情的真谛?
如何应对人力成本上涨的挑战
六种常用阀门的工作原理及适用场景
怀孕母羊有哪些需要警惕的信号?
老人摔倒后不能掉以轻心,警惕三大致命并发症
鸡种蛋的保存时间与方法 其保存温湿度如何掌握
皂化值的定义与测定方法解析
双歧杆菌四联活菌片和酪酸梭菌二联活菌散哪个好?家长的选择指南
跳槽谈薪前必不可少的一步,你做了吗?
服用优甲乐片需避免的食物有哪些?
优甲乐的作用与功效是什么?看看使用过的患者是怎么说的
【健康科普】幽门螺杆菌的精准诊断与科学治疗策略
燃油车or新能源车?轻松指南帮你做决定
成功汇报指南:提升PPT表达效果的方法
运维的目标管理:以业务为核心,驱动运维价值最大化
姆巴佩在世界杯上的表现如何提升了他的声望?
many和much的用法口诀:可数 many 数得清,不可数 much 细无形
突然晕倒失去意识马上又好了
半枝莲种植方法和时间
麒麟的颜色及象征解读
南唐本能入主中原,为何却未能实现?庸主错失良机
别纠结了!冲马桶前,这个小动作可能影响全家健康
八卦,中国古代智慧的奇妙符号
房产过户给未成年孙子要什么条件