首页 > 其他分享 >keycloak~Refresh_token阶段不走RequiredAction

keycloak~Refresh_token阶段不走RequiredAction

时间:2024-09-03 15:14:23浏览次数:12  
标签:用户 refresh token Refresh RequiredAction keycloak

Refresh_token是在access_token过期之后,用来换新的access_token的,有了Refresh_token之后,用户可以在很长一段时间不需要重新登录,这对于用户体验是有好处的;RequiredAction是一种登录阶段的必选行为,当一个用户被某个RequiredAction标记之后,用户必须完成RequiredAction,才算完成本次登录。

Refresh_token阶段是否会检查RequiredAction

这个答案是否定的,当一个用户登录之后,它在后台被标记一个RequiredAction,对于已经产生的refresh_token是不会有影响的,你拿着refresh_token还是可以直接换新的access_token。

当用户被禁用了,Refresh_token是否会被就叫影响

这个答案是肯定的,当一个用户的enable为false时,用户所产生的refresh_token就无法换回新的token了,这时会有http_status为400的错误返回

{
    "error": "invalid_grant",
    "error_description": "User disabled"
}

从keycloak源代码中也是可以看到的,位于org.keycloak.protocol.oidc.endpoints.TokenEndpoint类型的refreshTokenGrant()方法,有判断用户是否有效的方法,在`tokenManager.refreshAccessToken()方法中,如图

从内部方法可以找到判断用户状态的代码,如下

if (!user.isEnabled()) {
  throw new OAuthErrorException(OAuthErrorException.INVALID_GRANT, "User disabled", "User disabled");
}

如果希望refresh_token阶段对用户的required action有所控制,可以在这里添加对应的逻辑即可。

标签:用户,refresh,token,Refresh,RequiredAction,keycloak
From: https://www.cnblogs.com/lori/p/18394668

相关文章

  • php获取微信access_token
    参考代码:新建一个php文件,将下面代码拷贝进去,替换自己的appid和appSecret<?php//检查是否是GET请求if($_SERVER['REQUEST_METHOD']=='GET'){echogetAccessToken();}functiongetAccessToken(){$appId='替换';//微信小程序的AppID$appSecret=......
  • pbootcms后台的百度普通收录token怎么填写?怎么获得?
    首先打开:百度搜索资源平台(https://ziyuan.baidu.com/),如果您还没有账号,那么可以直接注册一个新的账号。然后点击用户中心,接着选择站点管理,再点击添加网站(请务必按照系统给出的提示进行相关操作)最后点击资源提交,找到普通收录,然后选择推送接口,此时您就能够看到Token值了!把token......
  • Spring Security基于token的极简示例
    1引言SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,但是用起来有点复杂,为了便于学习理解,下面将用最简洁的配置和示例,展示整个流程。2代码创建一个spring-security-demo的项目,总共包含5个文件2.1pom.xml引入spri......
  • Android 11 About SleepToken / (Settings)Screen timeout
    AndroidR激活Settings里面的息屏休眠,最前台运行的Activity生命周期->onPause->onStopadbshelldumpsyswindowpolicy//获取PhoneWindowManager的dump信息...bootCompleted=truescreenState=SCREEN_STATE_ON/SCREEN_STATE_OFFinteractiveState=INTERACTIVE_STATE_AW......
  • Spring Cloud + JWT实现双Token刷新
            在现代微服务架构中,使用JWT(JSONWebToken)进行身份验证和授权已成为一种标准做法。然而,JWT的无状态特性虽然带来了灵活性,但也需要我们在安全性方面多加考虑。为了解决JWT的一些潜在安全问题,比如令牌的有效期和刷新机制,双 Token 刷新策略是一个非常有效的......
  • [Paper Reading] Transfusion: Predict the Next Token and Diffuse Images with One
    Transfusion:PredicttheNextTokenandDiffuseImageswithOneMulti-ModalModellink时间:24.08机构:Waymo&UniversityofSouthernCaliforniaTL;DR提出一种使用混合模态token来训练transformer,名为transfusion,是一种生成式AI模型。主要工作使用了2T的tokens结合语言......
  • 【漏洞复现】赛蓝企业管理系统 AuthToken 身份绕过任意登陆漏洞
    免责声明:        本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测试时,可能会违反某些法律法规......
  • 已解决:`javax.security.auth.RefreshFailedException` 刷新失败的正确解决方法,亲测有
    在Java开发中,javax.security.auth.RefreshFailedException异常通常涉及到安全认证和授权机制。这个异常通常在尝试刷新或更新认证凭证时出现问题,可能会影响到应用的安全性和稳定性。本文将详细分析该异常的原因,并提供有效的解决方法。1.问题描述javax.security.auth.R......
  • C++ //练习 19.21 编写你自己的Token类。
    C++Primer(第5版)练习19.21练习19.21编写你自己的Token类。环境:LinuxUbuntu(云服务器)工具:vim 代码块classToken{ public: Token():tok(INT),ival(0){} Token(constToken&t):tok(t.tok){copyUnion(t);} Token&operator=(constToken&); ~Token(){......
  • C++ //练习 19.23 为你的Token类添加移动构造函数和移动赋值运算符。
    C++Primer(第5版)练习19.23练习19.23为你的Token类添加移动构造函数和移动赋值运算符。环境:LinuxUbuntu(云服务器)工具:vim 代码块classToken{ public: Token():tok(INT),ival(0){} Token(constToken&t):tok(t.tok){copyUnion(t);} Token&operator=(......