J'utilise ce guide http://www.keycloak.org/docs/3.2/server_development/topics/user-storage.html pour configurer la fédération d'utilisateurs. Cela fonctionne très bien et mes utilisateurs peuvent se connecter.Fédération d'utilisateurs KeyCloak ET ROLES DYNAMIQUES
Mes utilisateurs sont stockés dans une base de données Mysql. Les utilisateurs ont des rôles différents - également stocker dans mysql.
Je ne suis pas sûr de savoir comment ajouter des rôles au UserModel.
J'ai mis en place des méthodes getUserXXX
par exemple
@Override
public UserModel getUserByEmail(String email, RealmModel realm) {
LOGGER.info("LOADING BY EMAIL");
try (Connection connection = ds.getConnection()) {
try (PreparedStatement statement = connection.prepareStatement("select * from user where email = ?")) {
statement.setString(1, email);
try (ResultSet rs = statement.executeQuery()) {
if (rs.next()) {
UserEntity user = new UserEntity();
user.setEmail(rs.getString("email"));
user.setId(rs.getString("email"));
user.setPassword(rs.getString("password"));
return new UserAdapter(session, realm, model, user);
}
}
}
} catch (SQLException ex) {
LOGGER.error(ex.getMessage(), ex);
}
return null;
}
Je veux maintenant ajouter des rôles spécifiques à chacun des utilisateurs qui se connectent. Comment fait-on ça?
Mon UserAdapter étend AbstractUserAdapterFederatedStorage
RoleModel est une interface. Y a-t-il une classe auxiliaire existante ou je dois implémenter toutes ces méthodes. – chege
Vous pouvez uniquement affecter des rôles existants aux utilisateurs. Vous pouvez l'utiliser pour obtenir un rôle existant. realm.getClientByClientId (clientId) .getRole (roleName); – Boomer