0

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 作为后备值?

4

0 回答 0