首页 > 其他分享 >keycloak~RequiredActionProvider中获取表单认证前URL的参数

keycloak~RequiredActionProvider中获取表单认证前URL的参数

时间:2024-04-26 14:24:05浏览次数:13  
标签:RequiredActionProvider 页面 认证 URL context 表单 keycloak

在keycloak中,我们在进行brower浏览器的表单认证时,一般在跳到本页面时,URL上会有redirect_uri这种参数,用来告诉keycloak,在认证成功后的跳转地址,你在表单认证控制器中,可以通过context.getHttpRequest().getUri().getQueryParameters().getFirst("redirect_uri")进行获取,而当你为brower认证流程添加RequiredAction行为之后,你需要在进入RequiredAction时带上这些参数,你是不能直接通过getQueryParameters()方法获取的,因为它之前的页面不是来源页,而是认证表单页,那么keycloak对于这种问题是如何处理的呢?

RequiredActionProvider中的方法

页面渲染

 @Override
 public void requiredActionChallenge(RequiredActionContext context) {
    Response challenge = context.form()
                .createForm("login-sms-otp-config.ftl");
     context.challenge(challenge);
 }

表单提交

 @Override
 public void processAction(RequiredActionContext context) {
  context.success();
}

添加获取认证表单中URL参数

很显示,获取上一个页面的参数,应该在requiredActionChallenge渲染页面方法中实现

  private static String getRedirectUri(RequiredActionContext context) {
    AuthenticationSessionModel authSession = context.getAuthenticationSession();

    if( authSession.getClientNotes().containsKey("redirect_uri")){
      return authSession.getClientNotes().get("redirect_uri");
    }
    return "https://www.abc.com";
  }

我们认证页面将来源页的参数临时存储到了authSession.getClientNotes()这个字典中,供认证流程中使用。

getClientNotes()返回的URL参数集合如下图:

标签:RequiredActionProvider,页面,认证,URL,context,表单,keycloak
From: https://www.cnblogs.com/lori/p/18159974

相关文章

  • Python3.8.4 解决 ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently
    系统版本:CentOSLinuxrelease7.6.1810(Core)编译安装Python3.8.4[root@hankyoon~]#tar-xvfPython-3.8.4.tgz[root@hankyoon~]#cdPython-3.8.4/[root@hankyoon~]#./configure--prefix=/usr/local/python3.8[root@hankyoon~]#make&&makeinstall[......
  • 前端面试题·讲一讲什么是URL编码?
    前端面试题·讲一讲什么是URL编码?Url编码通常也被称为百分号编码(UrlEncoding),是因为它的编码方式非常简单,使用%百分号加上两位的字符——代表一个字节的十六进制形式。例如a在US-ASCII码中对应的字节是0x61,那么Url编码之后得到的就是%61。Url编码默认使用的字符集是US-ASCII。......
  • centos8报错错误:为 repo 'appstream' 下载元数据失败 : Cannot prepare internal mirr
    出现如下错误的错误:为repo‘appstream’下载元数据失败:Cannotprepareinternalmirrorlist:NoURLsinmirrorlist原因在2022年1月31日,CentOS团队终于从官方镜像中移除CentOS8的所有包。CentOS8已于2021年12月31日寿终正非,但软件包仍在官方镜像上保留了一段时间。现在......
  • keycloak~jwks-rsa中使用的设计模式
    com.auth0.jwk组织下面的jwks-rsa包,主要实现的是通过公钥对jwt的签名进行验证,在这个包中,它使用了包装器的设计模式,对默认的jwks提供者添加了一缓存的支持,通过建立一个GuavaCachedJwkProvider类,传入一个默认的UrlJwkProvider来将这个Provider进行包装,让它具有缓存的能力!包装器模式......
  • keycloak~使用jwks验证token的合法性
    keycloak提供了jwks服务,其地址可以在/auth/realms/fabao/.well-known/openid-configuration的返回结果中找到,jwks_uri它表示了公钥的颁发者,可以使用颁发出来的公钥来验证token的签名,基地址也是固定的/auth/realms/fabao/protocol/openid-connect/certs。springboot构建keycloak的......
  • ASP.NET Core Web API下基于Keycloak的多租户用户授权的实现
    在上文《Keycloak中授权的实现》中,以一个实际案例介绍了Keycloak中用户授权的设置方法。现在回顾一下这个案例:服务供应商(ServiceProvider)发布/WeatherForecastAPI供外部访问在企业应用(Client)里有三个用户:super,daxnet,nobody在企业应用里有两个用户组:administrators,users在企......
  • 最近对接通联支付第三方平台,支付成功后要回调方法告知支付是否成功,通知url必须为直接
    最近公司要做PC端,微信小程序端支付,对接的第三方是通联支付,因为需要用到回调方法,所以想到了natapp内网穿透的方法给通联支付提供回调的地址访问我本机项目第一步:打开natapp,注册账号https://natapp.cn/新手的话,需要购买免费隧道,不用花钱 我几年前已经申请账号也购买免费......
  • flutter 移动应用程序中打开URL
    url_launcher:^6.2.5 在Flutter中,url_launcher库是用于在移动应用程序中打开URL的常用工具。它允许你通过调用系统的浏览器或其他应用程序来打开指定的URL,比如网页链接、电子邮件链接、电话号码等。这个库提供了一种简单的方法来实现在应用中跳转到外部链接的功能,增强了应用的......
  • url编码和解码分析URLEncoder.encode和URLDecoder.decode
    url编码和解码分析1.Get请求会将参数做默认的url解码操作,接口接收到的值是Get解码后的值。2.可以将Get操作修改成Post操作,这样不会url解码。可以在接口中做url解码。3.在多次传递参数的过程中,无需反复的编码(或者加了空格,加了换行),否则会将整个字符串错乱了。(/%2F%252F)......
  • 忘发通知邮件,微软默默地给 CURL 捐赠一万美元
    忘发通知邮件,微软默默地给CURL捐赠一万美元OSCHINA​已认证账号​关注 88人赞同了该文章出品|开源中国curl创始人DanielStenberg在博客中晒出了微软开源办公室FOSS基金发出的邮件,邮件中提及curl项目在微软员工的投票中胜出,因此每个......