首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以使用pac4j AnonymousClient作为其他直接客户端的后盾?

有没有一种方法可以使用pac4j AnonymousClient作为其他直接客户端的后盾?
EN

Stack Overflow用户
提问于 2021-07-18 14:31:05
回答 1查看 49关注 0票数 1

我有一个应用程序使用pac4j与一个JWT客户端(即一个直接),我想使用AnonymousClient作为后盾。如何确保AnonymousClient在JwtClient之后被调用?DefaultSecurityLogic是否尊重客户提供的订单?

我也看了一下setProfileFactoryWhenNotAuthenticated,但是在文档中他们只提到了它在间接客户端中的使用(我尝试了用我的JwtClient,但它没有工作)。

为了使它更辣,我实际上使用了一个间接客户端,我希望AnonymousClient作为整个客户链的后盾。对间接客户端使用setProfileFactoryWhenNotAuthenticated将无法工作,因为我希望使用AnonymousCLient,即使直接客户机被丢弃,因为请求是AJAX。

总结一下我想做的是:

  • If AJAX:直接客户端>匿名
  • 如果没有AJAX:直接客户端>间接客户端>匿名

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-01 21:01:52

这个问题并不是最近才提出的,但我试图做一些类似的事情,并发现了如何去做。

这里的匿名部分被描述为沉默登录:https://www.pac4j.org/docs/clients.html#8-silent-login

示例:

代码语言:javascript
复制
myClient.setProfileFactoryWhenNotAuthenticated(p -> AnonymousProfile.INSTANCE);

  1. 直接客户端>匿名

我认为您需要列出所有直接客户端,并在列表上的最后一个客户机上调用上述方法。

  1. 直接客户>间接客户>匿名

这是违反直觉的,因为您需要先将间接客户端放在客户列表中,然后将直接客户端放在客户端列表中。但是我想它和上面一样,您需要在最后一个直接客户机上调用setProfileFactoryWhenNotAuthenticated方法。

来自DefaultSecurityLogic文档(重点是我的):

首先,如果未对用户进行身份验证(没有配置文件),并且在参数中定义了一些客户端,则会尝试为直接客户端进行登录。

然后,如果用户有配置文件,

  • 将根据authorizers配置检查授权。如果授权有效,则授予用户访问权限。否则,将显示一个403错误页。

最后,如果用户未进行身份验证(没有配置文件),则如果第一个定义的客户端是clients configuration.中的间接客户端,则重定向到适当的身份提供程序。否则,将显示一个401错误页。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68430080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档