KeyCloak getProvider返回null

问题描述

我的KeycloakSmsAuthenticatorUtil类有一个getMessage(AuthenticationFlowContext context,String key)方法,该方法使用themeProvider获取主题,但是keycloakSession.getProvider()始终返回null。

public class KeycloakSmsAuthenticatorUtil {

private static Logger logger = Logger.getLogger(KeycloakSmsAuthenticatorUtil.class);

...

public static String getMessage(AuthenticationFlowContext context,String key) {
    String result = null;

    try {
        ThemeProvider themeProvider = context.getSession().getProvider(ThemeProvider.class,"extending");
    
    if (themeProvider == null) {
            logger.warn("THEME PROVIDER IS NULL");
        }
     
        Theme currentTheme = themeProvider.getTheme(context.getRealm().getLoginTheme(),Theme.Type.LOGIN);
        Locale locale = context.getSession().getContext().resolveLocale(context.getUser());
        result = currentTheme.getMessages(locale).getProperty(key);
    } catch (IOException e) {
        logger.warn(key + "not found in messages");
    }

    return result;
}

Themeprovider为null,因此当接收到currentTheme时,程序在下一行崩溃。

.[0m.[33m16:43:40,550 WARN  [six.six.keycloak.authenticator.KeycloakSmsAuthenticatorUtil] (default task-2) THEME PROVIDER IS NULL
.[0m.[33m16:43:40,551 WARN  [org.keycloak.services] (default task-2) KC-SERVICES0013: Failed authentication: java.lang.NullPointerException
        at deployment.keycloak-sms-authenticator-sns-test.jar//six.six.keycloak.authenticator.KeycloakSmsAuthenticatorUtil.getMessage(KeycloakSmsAuthenticatorUtil.java:173)

如何获取不可为空的themeProvider? 错误发生在ThemeProvider中,而不是上下文或keycloakSession中。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)