首页 > 其他分享 >keycloak~网站对接到Keycloak的步骤

keycloak~网站对接到Keycloak的步骤

时间:2024-04-08 11:46:55浏览次数:25  
标签:kc 步骤 refresh token client 客户端 Keycloak id keycloak

新网站对接到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字段

标签:kc,步骤,refresh,token,client,客户端,Keycloak,id,keycloak
From: https://www.cnblogs.com/lori/p/18120797

相关文章

  • 打印机扫描步骤
            ......
  • 数据库建表步骤
    根据三范式进行业务建模1)第一范式是指数据库表中的每个字段都是原子性的,即不可再分的。  例如:学生表,字段如下,其中班级字段就需要再次拆分,拆分后的属性如图2学生表id学生姓名学生年龄学生性别班级1张三8男一年级二班2李四8男一年级一班图一学生表id学生姓名学生年龄......
  • go~istio加载wasm的步骤
    参考https://github.com/higress-group/proxy-wasm-go-sdk/tree/main/proxywasmhttps://github.com/tetratelabs/proxy-wasm-go-sdkhttps://github.com/alibaba/higress/blob/main/plugins/wasm-go/pkg/wrapperhttps://tinygo.org/docs/reference/https://tinygo.org/docs......
  • 在Keycloak中实现多租户并在ASP.NET Core下进行验证
    Keycloak是一个功能强大的开源身份和访问管理系统,提供了一整套解决方案,包括用户认证、单点登录(SSO)、身份联合、用户注册、用户管理、角色映射、多因素认证和访问控制等。它广泛应用于企业和云服务,可以简化和统一不同应用程序和服务的安全管理,支持自托管或云部署,适用于需要安全、灵......
  • 针对本小组项目遇到的某个问题,按照下述步骤,商量一个改进的具体计划,同时评价改进的效果
    航空票务系统可能遇到的问题是客户购票时系统出现错误或崩溃,导致延误或取消预订。改进计划:1.建立规则,仪式,流程,模式:确立清晰的预订流程,包括客户订票、系统处理订单、付款、发票生成等环节。制定规则和标准操作程序,以应对常见的系统故障和错误情况,例如如何处理系统崩溃或错误的......
  • 针对本小组项目遇到的某个问题,按照下述步骤,商量一个改进的具体计划,同时评价改进的效果
    问题描述:用户在使用校园跑腿系统时,经常会出现订单信息不准确或者不完整的情况,导致跑腿员无法准确完成任务。改进计划:提升用户下单的流程和界面设计,让用户在填写订单信息时更加清晰和明了。例如,可以添加必填项标识,提供下拉框选择等功能,避免用户填写错误或遗漏信息。引入订单确......
  • 针对本小组项目遇到的某个问题,按照下述步骤,商量一个改进的具体计划,同时评价改进的效果
    针对本小组项目遇到的某个问题,按照下述步骤,商量一个改进的具体计划,同时评价改进的效果1、建立规则,仪式,流程,模式2、给好行为正面的反馈3、明确指出不合适的行为,必要时调整人员发布到自己的博客上每个同学都可以提交本人博客链接,由助教统计答:遇到的问题NetworkErrorAxiosEr......
  • 【六 (2)机器学习-机器学习建模步骤/kaggle房价回归实战】
    一、确定问题和目标:1、业务需求分析:与业务团队或相关利益方进行深入沟通,了解他们的需求和期望。分析业务流程,找出可能的瓶颈、机会或挑战。思考机器学习如何帮助解决这些问题或实现业务目标。2、问题定义:将业务需求转化为一个或多个具体的机器学习问题,例如分类、回归......
  • keycloak~在认证的action中自定义重定向地址
    场景与实现逻辑我的登录接口,在输入账号密码成功后进行中间页中间页可以通过添加Authenticator的实现类来写逻辑authenticate方法是渲染页面的,action方法是提交表单后的逻辑context.success()方法表示认证成功,将进行重写向操作可以通过Response.status(302).header(HttpHeade......
  • 用java去实现程序化广告应该有哪些步骤?
    目录1.需求分析和规划2.选择合适的技术栈3.搭建开发环境4.数据库设计5.后端开发6.前端开发7.集成第三方服务8.测试和调试9.部署上线10.持续优化和迭代1.需求分析和规划在这一阶段,我们需要详细分析和理解项目需求,并制定相应的规划和计划。这包括以下几个......