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

打印 上一主题 下一主题

主题 906|帖子 906|积分 2718

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

页面渲染
  1. @Override
  2. public void requiredActionChallenge(RequiredActionContext context) {
  3.     Response challenge = context.form()
  4.                 .createForm("login-sms-otp-config.ftl");
  5.      context.challenge(challenge);
  6. }
复制代码
表单提交
  1. @Override
  2. public void processAction(RequiredActionContext context) {
  3.   context.success();
  4. }
复制代码
添加获取认证表单中URL参数

很显示,获取上一个页面的参数,应该在requiredActionChallenge渲染页面方法中实现
  1.   private static String getRedirectUri(RequiredActionContext context) {
  2.     AuthenticationSessionModel authSession = context.getAuthenticationSession();
  3.     if( authSession.getClientNotes().containsKey("redirect_uri")){
  4.       return authSession.getClientNotes().get("redirect_uri");
  5.     }
  6.     return "https://www.abc.com";
  7.   }
复制代码
我们认证页面将来源页的参数临时存储到了authSession.getClientNotes()这个字典中,供认证流程中使用。
getClientNotes()返回的URL参数集合如下图:



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表