我正在使用 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 profile");
}
} catch (Exception e) {
}
});
}
}
这是一个示例测试,我正在修改 DemoconfigFaactory 当我重新启动我的应用程序时,默认的应用程序已加载,我可以看到授权调用将 openid 作为默认范围发送,当我点击 customScopes servlet 时,范围现在设置为 openid 配置文件,并且它 #refecte 在应用程序中,[默认范围是 Openid ],现在我第二次再次点击#endpoint,范围没有改变,范围是 openid 配置文件,现在应该是 openid #v,但我看不到发送 openid 的身份验证端点,它在登录时仍然反映 openid 配置文件。
每当我从 UI 更改配置时,每次配置都应相应更新。
我的意思是,你不应该这样做,随着时间的推移改变配置。
您需要两个具有不同范围的
GoogleOidcClient
,或者您需要在代码中进行自定义。