新网站对接到KC的部署

  1. kc的环境
  2. 向kc申请自己的客户端
  3. kc的登录接口
  4. 通过code换token接口
  5. 刷新token接口
  6. kc的用户信息接口
  7. 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的步骤的更多相关文章

  1. VUE集成keycloak和Layui集成keycloak

    一:KEYCLOAK配置部分: 1,下载keycloak,官网地址:https://www.keycloak.org/downloads.html.下载第一个就行 2,下载完毕之后,打开文件,访问 b ...

  2. 使用Nginx和Logstash以及kafka来实现网站日志采集的详细步骤和过程

    使用Nginx和Logstash以及kafka来实现网站日志采集的详细步骤和过程 先列出来总体启动流程: (1)启动zookeeper集群(hadoop01.hadoop02和hadoop03这3台机 ...

  3. ionic + asp.net core webapi + keycloak实现前后端用户认证和自动生成客户端代码

    概述 本文使用ionic/angular开发网页前台,asp.net core webapi开发restful service,使用keycloak保护前台页面和后台服务,并且利用open api自动 ...

  4. Keycloak 13 自定义用户身份认证流程(User Storage SPI)

    Keycloak 版本:13.0.0 介绍 Keycloak 是为现代应用程序和服务提供的一个开源的身份和访问管理的解决方案. Keycloak 在测试环境可以使用内嵌数据库,生产环境需要重新配置数据 ...

  5. keycloak管理用户权限

    一.在keycloak中定义基础数据 1.realm 如果多个模块使用不同的用户权限,就分realm 如果多个模块共用一套用户权限,就顶一个一个realm 2.每个模块是一个client-app 3. ...

  6. jenkins 集成 keycloak 认证

    keycloak 是很不错的sso 工具,当然也有Jenkins 的插件,我们可以使用jenkins 插件,方便用户账户的管理 环境准别 docker-compose version: "3 ...

  7. Keycloak服务器安装和配置

    安装地址:https://www.keycloak.org/archive/downloads-4.4.0.html 参考文档:https://www.keycloak.org/docs/latest ...

  8. keycloak && docker安装 &&spring boot 集成使用

    1. 基础依赖 a. docker mysql b. dokcer keycloak-mysql   2. 安装     mysql (注意实际使用最好使用本地数据卷) docker run --na ...

  9. Keycloak快速上手指南,只需10分钟即可接入Spring Boot/Vue前后端分离应用实现SSO单点登录

    登录及身份认证是现代web应用最基本的功能之一,对于企业内部的系统,多个系统往往希望有一套SSO服务对企业用户的登录及身份认证进行统一的管理,提升用户同时使用多个系统的体验,Keycloak正是为此种 ...

  10. 顶 最新简捷实用的JSP动态网站环境搭建详细步骤

    阿里西西小编给您推荐这个最新简捷实用的JSP动态网站环境搭建详细步骤讲解,这里还有关于JSP 动态网站 环境 搭建 的教程,希望您能够喜欢并学到东西提升自己的知识与技能,下面是内容详细阅读: 最新简捷 ...

随机推荐

  1. 名校AI课推荐 | MIT6.S191《深度学习导论》

    "连续开设5年,对新手友好.易于上手,参加课程的多数学生来自非计算机科学领域--" 推荐一门AI课程--MIT官方深度学习入门课程6.S191<深度学习导论(2022)> ...

  2. Langchain 介绍与入门

    官方介绍 LangChain 是一个利用LLM开发应用程序的框架.它让应用程序具备: 上下文感知能力:将LLM连接到上下文源(提示说明.少量示例.用以形成其响应的内容等) 推理:依靠LLM进行推理(例 ...

  3. Scyther 协议形式化验证翻译 (第二章)

    论文概述:$\alpha +\forall (\sum \oint_{3}^{4})$ 第二章:  操作语义 在第二章中我提出了一种新的安全协议的模型,用于定义安全协议以及协议的行为,在明确的模型中执 ...

  4. MySql变量说明

    1 #变量 2 /* 3 系统变量: 4 全局变量 5 会话变量 6 7 自定义变量: 8 用户变量 9 局部变量 10 11 */ 12 #一.系统变量 13 /* 14 说明:变量由系统定义,不是 ...

  5. java中webSocket发送图片文件数据非常慢

    一.问题由来 目前在开发的这个小程序中有一个功能需要和Unity客户端进行互动操作,互动的大致流程为在微信小程序中点击一个操作,发送一个HTTP请求, Java后台收到这个请求后,会给Unity客户端 ...

  6. 泰凌微TLSR825x智能照明解决方案开发之实例解析

    一 前记 前几天,看到了一个笑话,一个朋友在群里吼道,老婆送的皮带,用了半年之后,怎么里面掉出来一个电路板,这个是是啥? 笔者看了回复道,哥们,老婆不放心你啊. 在这个万物都可智能的时代,产品不加上智 ...

  7. AOSP-刷机

    准备 1.AOSP源码下载 可以参考AOSP下载且编译 这里我下载的是android-12.1.0_r5的AOSP源码 2.下载驱动 因为我下载的是android-12.1.0_r5的AOSP源码,因 ...

  8. MediaCodec 低延时解码

    介绍 我们在使用Android的硬解进行解码时,如果是Android11以上则可以使用其特性低延迟,谷歌官方文档 以下是Android 11支持的低时延特性: ANGLE支持:Android 11引入 ...

  9. 移植openssh-7.5p1(包括openssl-1.0.2l、zlib-1.2.11)到HISI3520d(部署篇)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  10. python script 编写摘要(一)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...