Otro vídeo muy esperado, el de implementar Keycloak en tus aplicaciones de microservicios. Keycloack es un gestor de identidad y acceso para tus aplicaciones corporativas. Un sistema de login con SSO(Single Sign On), Social login, Active Directory, LDAP, etc. fácil y escalable.
Instalación
Poner en marcha Keycloak es super fácil, como muchas otras aplicaciones de este tipo solo hay que descargar y descomprimir(No termino de entender el miedo de mucha gente). Despues solo hay que arrancar con un comando:
# Descargar y descomprimir wget https://downloads.jboss.org/keycloak/11.0.1/keycloak-11.0.1.tar.gz && tar -xvzf keycloak-11.0.1.tar.gz # Arrancar ./standalone.sh -b 0.0.0.0
Donde el parámetro ‘-b 0.0.0.0′(Bind address) indicar la IP sobre la que escuchará el software, en este caso cualquier IP.
A partir de este momento ya podemos acceder a Keycloak a través de la URL ‘http://localhost:8080/auth’ y crear nuestro usuario y password de administrador tal como hacemos en el vídeo.
Acceso mediante API Rest
A partir de este momento ya podemos conectarnos también a través de la API Rest a Keycloak. En este caso usaremos el cliente que ya viene por defecto ‘admin-cli’:
# Loguearse en el sistema curl \ -d "client_id=admin-cli<cliente>" \ -d "username=<usuario>" \ -d "password=<password>" \ -d "grant_type=password" \ "http://localhost:8080/auth/realms/master/protocol/openid-connect/token" # Obtener datos del realm master curl \ -H "Authorization: bearer <access-token>" \ "http://localhost:8080/auth/admin/realms/master" # Refrescar el token de acceso(Por si se nos caduca como en el vídeo) curl \ -d "client_id=admin-cli" \ -d "refresh_token=<refresh-token>" \ -d "grant_type=refresh_token" \ "http://localhost:8080/auth/realms/master/protocol/openid-connect/token"
Securizando servicios con Keycloak
Ahora que ya tenemos nuestro Keycloak instalado ya podemos empezar a securizar cualquier servicio, en nuestro caso hemos socurizado un Apache que teníamos arrancado en la URL ‘http://172.17.0.3’.
El primer paso es crear un nuevo cliente a través del menú lateral y la opción ‘Clients'(1) y haciendo click sobre ‘create'(2):
Aquí tendremos que configurar lo siguiente:
- 1. Id y nombre del cliente.
- 2. ‘Client protocol’ igual a ‘openid-connect’.
- 3. ‘Valid Redirect URIs’ igual a ‘http://localhost:4180/oauth2/callback’ o a la URL a la que se redirijan los usuarios después de hacer login.
Y finalmente aseguraos que tenéis las credenciales(1) en la pestaña ‘Credentials’:
Arrancando con Oauth2-proxy
Ya solo nos queda usar Oauth2-proxy para securizar el servicio nuevo. El comando es el siguiente:
./oauth2-proxy \ --http-address=0.0.0.0:4180 \ --email-domain=* \ --cookie-secure=false \ --cookie-secret=1234567890123456 \ --upstream=http://172.17.0.3 \ --provider=oidc \ --client-id=oauth2-proxy \ --client-secret=21d4cf5d-4f7b-499c-93fa-e838a01eb5f1 \ --oidc-issuer-url="http://localhost:8080/auth/realms/master" \ --insecure-oidc-allow-unverified-email=true \ --redirect-url="http://localhost:4180/oauth2/callback"
Os dejo exactamente el que he puesto en el vídeo acordaos de cambiar los parámetros, sobretodo el ‘–client-secret’. Si al hacer login os da error probad a borrar las cookies porque a veces da problemas al tener Keycloak y el servicio en el mismo dominio.