提问者:小点点

Keycloak 示例 - 方法 getValue() 未定义类型为 UserCredentialModel


我正在尝试使用提供的示例处理 keycloak 的自定义用户存储 SPI。https://github.com/keycloak/keycloak-quickstarts/tree/latest/user-storage-simple

当启动 mvn 全新安装 wildfly:deploy 时启动 Keycloak 时,我从这个文件 PropertyFileUserStorageProvider.java 收到 3 个错误:

类型为 org.keycloak.models.UserCredentialModel 的变量 cred 找不到符号(方法 getValue())

我不明白为什么我面临这些错误。他们还在文档中使用此 getValue 方法。https://www.keycloak.org/docs/latest/server_development/index.html#_user-storage-spi

爪哇岛

  • Java 版本 1.8.0_20
  • Apache Maven 3.6.2

感谢您的帮助


共1个答案

匿名用户

UserCredentialModel 类在最新的 Keycloak 版本 8.0.0 中发生了很大变化

看起来“快速入门示例”需要一些修复才能使用此版本

像这样:

    @Override
    public boolean isValid(RealmModel realm, UserModel user, CredentialInput input) {
        // No need to check input is of type UserCredentialModel since there no need to cast it anymore
        if (!supportsCredentialType(input.getType())) return false;

        String password = properties.getProperty(user.getUsername());
        if (password == null) return false;
        // Input Password can now be obtained using the getChallengeResponse() method of the CredentialInput  type
        return password.equals(input.getChallengeResponse());
    }

希望这会有所帮助。

问候