keycloak~网站对接到Keycloak的步骤

这篇具有很好参考价值的文章主要介绍了keycloak~网站对接到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,可以通过用户信息接口获取到用户的信息文章来源地址https://www.toymoban.com/news/detail-844193.html

  • /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的步骤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • keycloak~RequiredActionProvider的使用

    RequiredActionProvider,它是在认证过程中,需要当前登录的用户执行个性化的动作;当用户符合条件,就被执行RequiredActionProvider对作,当RequiredActionProvider没有正常提交( context.success() )之前,当前用户仍然是 未登录 状态,这在keycloak框架中,也有一些默认的个性化动作,它与整个

    2024年04月11日
    浏览(30)
  • keycloak~自定义登出接口

    keycloak提供了登出的接口,不过它是一个post方法,需要你根据client_id,client_secret及refresh_token进行登出操作的,有时不太灵活,所以我又自己封装了一下,通过客户端浏览器上存储的session_id进行会话登出。 api:{{host}}/auth/realms/fabao/protocol/openid-connect/logout 请求方法:POST 请求类型

    2024年02月07日
    浏览(34)
  • keycloak~AbstractJsonUserAttributeMapper的作用

    它是一个抽象类,用来更新条件更新用户属性(user_attribute)的信息,我们在实现自己的mapper时,需要关注3个方法,下面分别介绍一下: 它用来直指你的mapper是绑定到哪个认证服务下面的,即这个mapper支持的provider,例如你想在微信登录后执行这个mapper,你就把微信的provider.i

    2024年02月16日
    浏览(34)
  • Keycloak中授权的实现

    在Keycloak中实现授权,首先需要了解与授权相关的一些概念。授权,简单地说就是某个(些) 用户 或者某个(些) 用户组 ( Policy ),是否具有对某个 资源 ( Resource )具有某种 操作 ( Scope )的 权限 ( Permission )。所以,授权是一种权限管理,它建立在认证的基础上:用

    2024年04月13日
    浏览(33)
  • keycloak~时间不正确的问题

    首先我们应该知道,写到数据库里的时间,主要和你的mysql时区 system_time_zone 有关,而把mysql里的数据取出来,以json形式响应到浏览器上,这个时间会经过反序列化的过程,这时时间和注解 @JsonFormat(pattern = \\\"yyyy-MM-dd HH:mm:ss\\\", timezone = \\\"GMT+8\\\") 有关。 UTC: Coordinated Universal Time, 国

    2023年04月12日
    浏览(41)
  • keycloak~MFA多因子认证

    Keycloak 是一个开源的身份和访问管理解决方案,支持多因素认证(MFA)的配置非常灵活。下面是一些涉及Keycloak MFA相关的配置和步骤: 启用MFA : 登录到Keycloak管理控制台。 找到您的Realm(领域)并进入Realm设置。 在左侧导航栏中选择 \\\"Authentication\\\"(认证)选项卡。 找到 \\\"Mu

    2024年02月16日
    浏览(85)
  • keycloak~Googl的reCAPTCHA验证

    reCAPTCHA是Google公司推出的一项验证服务,使用十分方便快捷,在国外许多网站上均有使用。它与许多其他的人机验证方式不同,它极少需要用户进行各种识图验证。 它的使用方式如下如所示,只需勾选复选框即可通过人机验证。 虽然简单但效果很好,因为Google会收集一些浏

    2024年02月08日
    浏览(54)
  • keycloak~分布式缓存的使用

    keycloak目前提供了几种分布式缓存,我们自己的缓存,如果希望是分布式的,可以将缓存添加到以下几个缓存里即可 actionTokens clientSessions loginFailures offlineClientSessions offlineSessions sessions work 如果你希望自己开发分布式缓存,还是需要复杂的,需要配置,检查,获取远程分布式缓

    2024年02月05日
    浏览(44)
  • keycloak~社区登录中数据导入的方式

    在keycloak中集成了各种社区用户的登录与同步方案,当用户从第三方完成oauth认证之后,回调到keycloak的endpoint地址,在这里将会获取社区用户的信息,完成对数据从社区网站到keycloak网站的同步操作,下面介绍3种同步时的类型,下图是配置同步截图: 在Keycloak 14.0.0中,Identi

    2024年02月08日
    浏览(42)
  • keycloak~jwt的rs256签名的验证方式

    keycloak开放接口地址:/auth/realms/fabao/.well-known/openid-configuration RSA算法是一种非对称加密算法,其安全性基于大整数分解的困难性。在RSA算法中,有以下几个关键参数: n(模数) :n 是一个大整数,通常为两个大素数 p 和 q 的乘积,即 n = p * q。n 用于生成公钥和私钥,并且决

    2024年04月22日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包