Get it on Google Play
Tu partner Freelance para tus proyectos IT

Identificación y gestión de acceso para tus aplicaciones de microservicios con Keycloak y Oauth2-proxy

06-10-2020

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):

Cliente Keycloak - paso 1

Cliente Keycloak – paso 1

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.
Cliente Keycloak - paso 2

Cliente Keycloak – paso 2

Y finalmente aseguraos que tenéis las credenciales(1) en la pestaña ‘Credentials’:

Cliente Keycloak - paso 3

Cliente Keycloak – paso 3

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.

Si te ha servido, por favor comparte
 

Leave a Reply