Pac4j 编辑基于 UI 的客户端配置

Pac4j Editing Configuration of a Client Based on UI

提问人:rithvik 提问时间:11/14/2023 最后编辑:rithvik 更新时间:11/16/2023 访问量:24

问:

我正在将 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更改配置时,每次都应该相应地更新配置。

Java Servlet pac4j

评论


答:

0赞 jleleu 11/15/2023 #1

你不应该这样做,我的意思是,随着时间的推移改变配置。

要么需要两个具有不同范围的函数,要么需要在代码中进行自定义。GoogleOidcClient

评论

0赞 rithvik 11/16/2023
嗨,jleleu,您能否指导我为此添加的自定义,这将非常有帮助......
0赞 jleleu 11/16/2023
确定。是负责重定向到 OIDC 服务器的内部组件。您应该创建一个继承自该类的新类,并重写该方法以更改作用域。您应该将其设置为使用方法。OidcRedirectionActionBuilderbuildParamsGoogleOidcClientsetRedirectionActionBuilder
0赞 rithvik 11/23/2023
谢谢,对于你的rply,我们在oidcconfiguration中发送的配置属性(如授权URL)怎么样?你能帮我吗
0赞 jleleu 11/23/2023
通过创建一个新的继承并仅覆盖该方法,您将保留提供的配置并添加您的特定逻辑:您当然应该调用并围绕 .CustomOidcRedirectionActionBuilderOidcRedirectionActionBuilderbuildParamssuper.buildParamsauthParams.put(OidcConfiguration.SCOPE, configContext.getScope());
0赞 rithvik 11/28/2023
嗨,Jleleu,感谢您的回复,我实际上也在寻找配置更改,不仅是范围和自定义参数,还有像令牌 URL 或发现 URL 这样的配置更改。我们如何在我们的应用程序中做到这一点..