OIDC 请求的范围决定了 Open ID 服务器请求和返回的信息。
在 OIDCConfiguration 中,我已将范围设置为“openid email profile offline_access”,但在为 Azure AD Open ID 服务生成重定向 URL 时,始终只指定“openid profile email”。
我已将此追踪到 OidcRedirectionActionBuilder,它使用 OidcConfigurationContext 类,当在 WebContext 请求属性中找不到该值时,该类始终默认为“openid profile email”的范围。
在这一点上,我不确定如何为 Pac4J 生成的第一个重定向填充 WebContext 请求属性范围。
如果做不到这一点,我可能需要重载当前类,以便 OidcConfigurationContext 使用配置中的值作为 WebContext 中未指定的默认值,如下所示:
public class OidcConfigurationContext2 extends OidcConfigurationContext {
private final WebContext webContext;
public OidcConfigurationContext2(
final WebContext webContext,
final OidcConfiguration oidcConfiguration) {
super(webContext, oidcConfiguration);
this.webContext = webContext;
}
@Override
public String getScope() {
final String configuredScope =
Optional.ofNullable(getConfiguration().getScope())
.orElse("openid profile email");
return (String) this.webContext.getRequestAttribute(OidcConfiguration.SCOPE)
.orElse(configuredScope);
}
}
我的问题是 Pac4J 5.0.0 中是否存在原因,OidcConfigurationContext 默认为范围的 openid 电子邮件配置文件,并且不使用 OIDCConfiguration 作为后备值?