问题描述
我的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 (将#修改为@)