提问人:rithvik 提问时间:11/14/2023 最后编辑:rithvik 更新时间:11/16/2023 访问量:24
Pac4j 编辑基于 UI 的客户端配置
Pac4j Editing Configuration of a Client Based on UI
问:
我正在将 Pac4j 5.0X 与基于 maven 的 Java 8 Jee 项目一起使用。 供参考:: https://github.com/pac4j/jee-pac4j-demo/tree/5.0.x 在这里,我使用 Webservlet 来编辑配置更改
@WebServlet(urlPatterns = "/customScopes")
public class CustomScopesServlet2 extends HttpServlet {
Integer counter=0;
@Override
public void init() throws ServletException {
super.init();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
OidcConfiguration oidcConfiguration = new OidcConfiguration();
oidcConfiguration.setClientId("");
oidcConfiguration.setSecret("");
oidcConfiguration.setUseNonce(false);
DemoConfigFactory.CONFIG_INSTANCE.getClients().getClients().forEach(client -> {
try {
counter++;
if (client instanceof GoogleOidcClient) {
((GoogleOidcClient) client).setConfiguration(oidcConfiguration);
String name = client.getName();
if(counter==1)
((GoogleOidcClient) client).getConfiguration().setScope("openid profile");
else if(counter>1)
((GoogleOidcClient) client).getConfiguration().setScope("openid");
}
} catch (Exception e) {
}
});
}
}
这是一个示例测试,我正在修改 DemoconfigFaactory 当我重新启动我的应用程序时,默认的已加载,我可以看到授权调用发送的 openid 作为默认范围,当我点击 customScopes servlet 时,范围现在设置为 openid 配置文件,它 #refecte 在应用程序中,[默认范围是 Openid],现在我第二次点击 #endpoint 再次,范围没有更改范围,这是 openid 配置文件,现在应该是 OpenID #vbut 我看不到发送 OpenID 的身份验证端点,它在登录时仍然会反映 OpenID 配置文件。
每当我从UI更改配置时,每次都应该相应地更新配置。
答:
0赞
jleleu
11/15/2023
#1
你不应该这样做,我的意思是,随着时间的推移改变配置。
要么需要两个具有不同范围的函数,要么需要在代码中进行自定义。GoogleOidcClient
评论
0赞
rithvik
11/16/2023
嗨,jleleu,您能否指导我为此添加的自定义,这将非常有帮助......
0赞
jleleu
11/16/2023
确定。是负责重定向到 OIDC 服务器的内部组件。您应该创建一个继承自该类的新类,并重写该方法以更改作用域。您应该将其设置为使用方法。OidcRedirectionActionBuilder
buildParams
GoogleOidcClient
setRedirectionActionBuilder
0赞
rithvik
11/23/2023
谢谢,对于你的rply,我们在oidcconfiguration中发送的配置属性(如授权URL)怎么样?你能帮我吗
0赞
jleleu
11/23/2023
通过创建一个新的继承并仅覆盖该方法,您将保留提供的配置并添加您的特定逻辑:您当然应该调用并围绕 .CustomOidcRedirectionActionBuilder
OidcRedirectionActionBuilder
buildParams
super.buildParams
authParams.put(OidcConfiguration.SCOPE, configContext.getScope());
0赞
rithvik
11/28/2023
嗨,Jleleu,感谢您的回复,我实际上也在寻找配置更改,不仅是范围和自定义参数,还有像令牌 URL 或发现 URL 这样的配置更改。我们如何在我们的应用程序中做到这一点..
评论