keycloak~网站对接到Keycloak的步骤
新网站对接到KC的部署
- kc的环境
- 向kc申请自己的客户端
- kc的登录接口
- 通过code换token接口
- 刷新token接口
- kc的用户信息接口
- kc的jwt token说明
1. kc的环境
测试环境:https://test-kc.xxx.com
预发布环境:https://pre-kc.xxx.com
生产环境:https://kc.xxx.com
2. 向kc申请自己的客户端
联系负责开发kc的同事,申请一个客户端,需要提供以下信息:
client_id: 客户端id
client_secret: 客户端密码
3. kc的登录接口
/auth/realms/{realm}/protocol/openid-connect/auth?client_id=client_id&response_type=code&redirect_uri=redirect_uri
参数说明:
client_id: 客户端id
response_type: code
redirect_uri: 登录成功后的回调地址
4. 通过code换token接口
当你把第3步地址复制到浏览器后,会重写向到登录页,输入正确的用户名和密码后,提交后会重定向到来源页,带在地址上带着code码,这个code码是用来换取token的。
- /auth/realms/{realm}/protocol/openid-connect/token
- 请求方式:POST
- 请求参数:
client_id: 客户端id
client_secret: 客户端密码
grant_type: authorization_code
code: 通过登录成功重写向后地址上带着的code
- 返回参数:
{
"access_token": "token",
"expires_in": 1800,
"refresh_expires_in": 1800,
"refresh_token": "refresh_token",
"token_type": "bearer"
}
5. 刷新token接口
通过第4步获取到合法的token后,token的有效期是30分钟,可以在kc上配置,如果过期了,需要通过刷新token接口获取新的token
- /auth/realms/{realm}/protocol/openid-connect/token
- 请求方式:POST
- 请求参数:
client_id: 客户端id
client_secret: 客户端密码
grant_type: refresh_token
refresh_token: 通过第4步获取到的refresh_token
- 返回参数:
{
"access_token": "token",
"expires_in": 1800,
"refresh_expires_in": 1800,
"refresh_token": "refresh_token",
"token_type": "bearer"
}
6. kc的用户信息接口
通过第4步获取到的token,可以通过用户信息接口获取到用户的信息
- /auth/realms/{realm}/protocol/openid-connect/userinfo
- 请求方式:GET
- 请求头:
Authorization Bearer token
- 返回参数:
{
"sub": "1",
"email_verified": false,
"name": "admin",
"preferred_username": "admin",
"given_name": "admin",
"family_name": "admin",
"email": "
}
kc的jwt-token字段说明
- exp token过期时间戳
- iat token生成时间戳
- jti token的唯一身份标识,对接token_id或者refresh_token_id,这两个id在服务端会有存储,与它颁发的
token里的jti相对应 - iss token的发行机制,kc中的域,例如:https://kc.xxx.com/auth/realms/
- aud 授权到的客户端
- sub 当前用户ID
- typ 认证方式
- azp 当前客户端client_id
- session_state 当前会话id,浏览器中的AUTH_SESSION_ID和AUTH_SESSION_ID_LEGACY
- acr 如果clientSession通过cookie (SSO)进行身份验证,则使用0,否则为1
- allowed-origins 允许哪种域名使用我们的token
- realm_access 域的权限
- resource_access 客户端(资源)权限,kc允许你为用户依照客户端去授权
- scope 客户端模板,它将一类jwt中的属性进行分类,通过这个scope模块去渲染你的jwt字段
keycloak~网站对接到Keycloak的步骤的更多相关文章
- VUE集成keycloak和Layui集成keycloak
一:KEYCLOAK配置部分: 1,下载keycloak,官网地址:https://www.keycloak.org/downloads.html.下载第一个就行 2,下载完毕之后,打开文件,访问 b ...
- 使用Nginx和Logstash以及kafka来实现网站日志采集的详细步骤和过程
使用Nginx和Logstash以及kafka来实现网站日志采集的详细步骤和过程 先列出来总体启动流程: (1)启动zookeeper集群(hadoop01.hadoop02和hadoop03这3台机 ...
- ionic + asp.net core webapi + keycloak实现前后端用户认证和自动生成客户端代码
概述 本文使用ionic/angular开发网页前台,asp.net core webapi开发restful service,使用keycloak保护前台页面和后台服务,并且利用open api自动 ...
- Keycloak 13 自定义用户身份认证流程(User Storage SPI)
Keycloak 版本:13.0.0 介绍 Keycloak 是为现代应用程序和服务提供的一个开源的身份和访问管理的解决方案. Keycloak 在测试环境可以使用内嵌数据库,生产环境需要重新配置数据 ...
- keycloak管理用户权限
一.在keycloak中定义基础数据 1.realm 如果多个模块使用不同的用户权限,就分realm 如果多个模块共用一套用户权限,就顶一个一个realm 2.每个模块是一个client-app 3. ...
- jenkins 集成 keycloak 认证
keycloak 是很不错的sso 工具,当然也有Jenkins 的插件,我们可以使用jenkins 插件,方便用户账户的管理 环境准别 docker-compose version: "3 ...
- Keycloak服务器安装和配置
安装地址:https://www.keycloak.org/archive/downloads-4.4.0.html 参考文档:https://www.keycloak.org/docs/latest ...
- keycloak && docker安装 &&spring boot 集成使用
1. 基础依赖 a. docker mysql b. dokcer keycloak-mysql 2. 安装 mysql (注意实际使用最好使用本地数据卷) docker run --na ...
- Keycloak快速上手指南,只需10分钟即可接入Spring Boot/Vue前后端分离应用实现SSO单点登录
登录及身份认证是现代web应用最基本的功能之一,对于企业内部的系统,多个系统往往希望有一套SSO服务对企业用户的登录及身份认证进行统一的管理,提升用户同时使用多个系统的体验,Keycloak正是为此种 ...
- 顶 最新简捷实用的JSP动态网站环境搭建详细步骤
阿里西西小编给您推荐这个最新简捷实用的JSP动态网站环境搭建详细步骤讲解,这里还有关于JSP 动态网站 环境 搭建 的教程,希望您能够喜欢并学到东西提升自己的知识与技能,下面是内容详细阅读: 最新简捷 ...
随机推荐
- 需要入门IT行业并且想做java后台小伙伴-简单谈谈后台开发Spring与SpringBoot
1.Spring能做什么 1.1.Spring的能力 1.2.Spring的生态 https://spring.io/projects/spring-boot 覆盖了: web开发 数据访问 安全控制 ...
- linux网络编程基础知识汇总(更新中)
阿帕网 arpanet 阿帕网为美国国防部高级研究计划署开发的世界上第一个运营的封包交换网络,它是全球互联网的始祖. 局域网 LAN(Local Area Network ):通过路由器和交换机把计算 ...
- 【学习笔记】 - 基础数据结构 :Link-Cut Tree(进阶篇)
前言 LCT没题写可以去写树剖和一些线段树合并的题练手 LCT 的概念 原本的树剖是对树进行剖分,剖分为重边和轻边 LCT则是对于树分为虚边和实边,特殊的,LCT可以没有虚边(例:银河英雄传说v2) ...
- APISIX的安装和简单使用
APISIX 是一个云原生.高性能.可扩展的微服务 API 网关. 它是基于 Nginx 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动态路由和插件热加载,特别适合微服务体系下的 ...
- PostgreSql一个月学习计划
1.背景 国内使用数据库最多的莫过于mysql,大部分程序员第一次接触数据库就是mysql.(毕竟免费的 = =!)但近年来,有一些黑马出现(如下图),其中表现最突出的莫过于PostgreSQL.特规 ...
- 定时器之PWM
void PWM_Init(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); RCC_APB2PeriphClockCmd(RC ...
- Handler屏障消息
Handler 屏障消息 Handler Message 种类 Handler的Message种类分为3种: 普通消息 屏障消息 异步消息 同步消息 我们默认用的都是同步消息,即前面讲Handler里 ...
- Ubuntu adb 报错:no permissions (missing udev rules? user is in the plugdev group);问题的解决办法
问题重现: 确认: Android设备已连接PC Android设备已打开USB调试 zuo@zuo-ubuntu:/etc/udev/rules.d$ adb devices List of dev ...
- Android Studio导入Android 4.2.2的WiFi-Display系统源码
Sink源码概述 Miracast Sink端源码最早出现在Android 4.2.2上,通过googlesource可以很方便的查看: https://android.googlesource.co ...
- 人人都是艺术家!AI工具Doodly让潦草手绘变精美画作
AI绘画界太卷了,一天一个新东西,不久前刚给大家介绍了可以一秒出图的SDXL-Turbo,今天来聊一聊另一位重磅选手Doodly 有用过Stable Diffuison的小伙伴都知道,想要生成一张高质 ...