Saltar al contenido

Cómo autenticar un backend a backend con Spring Boot / Keycloak

Estate atento ya que en este tutorial hallarás el hallazgo que buscas.

Solución:

Parece que le falta alguna configuración para el servidor de autenticación. KeycloakRestTemplate ID de cliente usado, secreto de cliente, nombre de usuario y contraseña para validar contra el servidor Keycloak. Necesitas configurar el clientid, clientsecret, realm y URL del servidor de autenticación para KeycloakClientCredentialsRestTemplate me gusta –

@Service
public class MyKeycloakClientCredentialsConfig 

    @Value("$keycloak.realm")
    private String realm;

    @Value("$keycloak.auth-server-url")
    private String authServerUrl;

    @Value("$keycloak.resource")
    private String clientId;

    @Value("$keycloak.credentials.secret")
    private String clientSecret;

    @Bean
    public KeycloakClientCredentialsRestTemplate createRestTemplate() 
        return new KeycloakClientCredentialsRestTemplate(getClientCredentialsResourceDetails(),
                new DefaultOAuth2ClientContext());
    

    private ClientCredentialsResourceDetails getClientCredentialsResourceDetails() 
        String accessTokenUri = String.format("%s/realms/%s/protocol/openid-connect/token",
            authServerUrl, realm);
        List scopes = new ArrayList(0); // TODO introduce scopes

        ClientCredentialsResourceDetails clientCredentialsResourceDetails = 
                new ClientCredentialsResourceDetails();

        clientCredentialsResourceDetails.setAccessTokenUri(accessTokenUri);
        clientCredentialsResourceDetails.setAuthenticationScheme(AuthenticationScheme.header);
        clientCredentialsResourceDetails.setClientId(clientId);
        clientCredentialsResourceDetails.setClientSecret(clientSecret);
        clientCredentialsResourceDetails.setScope(scopes);

        return clientCredentialsResourceDetails;
    


Mi resttemplate es así:

public class SampleRestTemplate extends OAuth2RestTemplate 

    public KeycloakClientCredentialsRestTemplate(OAuth2ProtectedResourceDetails resource,
            OAuth2ClientContext context) 
        super(resource, context);
    


su trabajo perfectamente para mí.

De acuerdo, encontré la solución yo mismo: necesitaba configurar el botón “Cuentas de servicio habilitadas” en ON en la configuración del cliente para “backend-service2” dentro de keycloak.

Sección de Reseñas y Valoraciones

Recuerda que tienes permiso de decir si encontraste tu dificultad justo a tiempo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *