Keycloak Federation SPI 更改
Keycloak Federation SPI changes
我正在尝试将示例用户联合提供程序迁移到新版本的 keycloak (https://github.com/Smartling/keycloak-user-migration-provider),但我没有找到任何关于不兼容 API 更改的明显文档(即 UserFederationProvider
接口似乎已经被几个更具体的接口所取代,但似乎没有任何关于如何在它们之间迁移的例子。
我想我已经按照 keycloak 示例进行了大部分更改,但我很困惑在 Smartling 示例 RemoteUserFederationProvider
中的什么地方使用了 UserModel
接口,它有一个updateCredential
似乎已在最新版本中删除的方法。这应该如何在较新版本的 Keycloak 中实现?
我认为 UserModel 的变化发生在 Keycloak 1.7 和 2.0 之间。
此代码段来自我们的 Keycloak 2.0 实施。
package org.sample.keycloak.federation;
import org.keycloak.models.UserCredentialModel;
import org.keycloak.models.UserCredentialValueModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.utils.UserModelDelegate;
/**
* Readonly proxy for a UserModel that prevents passwords from being updated.
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class UserModelProxy extends UserModelDelegate {
public UserModelProxy(UserModel delegate) {
super(delegate);
}
@Override
public void setUsername(String username) {
throw new IllegalStateException("Username is readonly");
}
@Override
public void updateCredentialDirectly(UserCredentialValueModel cred) {
if (cred.getType().equals(UserCredentialModel.PASSWORD)) {
throw new IllegalStateException("Passwords are readonly");
}
super.updateCredentialDirectly(cred);
}
@Override
public void updateCredential(UserCredentialModel cred) {
if (cred.getType().equals(UserCredentialModel.PASSWORD)) {
throw new IllegalStateException("Passwords are readonly");
}
super.updateCredential(cred);
}
}
希望对您有所帮助。
我正在尝试将示例用户联合提供程序迁移到新版本的 keycloak (https://github.com/Smartling/keycloak-user-migration-provider),但我没有找到任何关于不兼容 API 更改的明显文档(即 UserFederationProvider
接口似乎已经被几个更具体的接口所取代,但似乎没有任何关于如何在它们之间迁移的例子。
我想我已经按照 keycloak 示例进行了大部分更改,但我很困惑在 Smartling 示例 RemoteUserFederationProvider
中的什么地方使用了 UserModel
接口,它有一个updateCredential
似乎已在最新版本中删除的方法。这应该如何在较新版本的 Keycloak 中实现?
我认为 UserModel 的变化发生在 Keycloak 1.7 和 2.0 之间。
此代码段来自我们的 Keycloak 2.0 实施。
package org.sample.keycloak.federation;
import org.keycloak.models.UserCredentialModel;
import org.keycloak.models.UserCredentialValueModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.utils.UserModelDelegate;
/**
* Readonly proxy for a UserModel that prevents passwords from being updated.
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class UserModelProxy extends UserModelDelegate {
public UserModelProxy(UserModel delegate) {
super(delegate);
}
@Override
public void setUsername(String username) {
throw new IllegalStateException("Username is readonly");
}
@Override
public void updateCredentialDirectly(UserCredentialValueModel cred) {
if (cred.getType().equals(UserCredentialModel.PASSWORD)) {
throw new IllegalStateException("Passwords are readonly");
}
super.updateCredentialDirectly(cred);
}
@Override
public void updateCredential(UserCredentialModel cred) {
if (cred.getType().equals(UserCredentialModel.PASSWORD)) {
throw new IllegalStateException("Passwords are readonly");
}
super.updateCredential(cred);
}
}
希望对您有所帮助。