Esta aplicación es un ejemplo de como proteger ASP.NET core 2.2 con un servidor de autentificacion oauth2 Keycloak. Tambien se implementa el consumo de la api con Nswag con OpenApi 3.
- Server
- ASP.NET Core 2.2
- Docker: keycloack server con base de datos mysql
- Client
- Nswag. interfaz de usuario y el generador de Swagger
-
Instalación:
-
Clonar el proyecto:
git clone https://github.com/juandepalo/Keycloak-aspnetcore.git
-
Situarse en el directorio:
cd ./Keycloak-aspnetcore
-
ejecutar:
docker-compose -f "docker-compose.yml" up -d --build --remove-orphans
-
Abrir el navegador http://localhost:8080 http://localhost:10001.
-
Modificacion de host.
- Para ejecutar localmente modificaremos el fichero 'C:\Windows\System32\drivers\etc\hosts' añadiendo el nombre del servicio de Keycloark que se puede modificar en el docker-compose.
modificación fichero hosts:
127.0.0.1 localhost keycloalocalhost
-
Configuracion de Keycloak.
- He dejado la exportación de configuración de un cliente para el ejemplo en keycloak-Import/realm-export.json
Pulsamos sobre Administrador console. Nos solicitara las credenciales. Por defecto con docker-compose hemos creado el usuario admin, con contraseña Pa55w0rd
Para nuestro entorno de pruebas crearemos nuestro Realm "Demo", para ello pulsamos sobre la add Realm
Vamos a la pestaña "Security Defenses" y permitimos todos los origenes
X-Frame-Options : ALLOW-FROM *
Importamos el cliente keycloak-Import/realm-export.json
Generamos Secret key que debemos copiar para configurar el proyecto de Aspnet.core
Para consumir la api necestiamos añadir un usuario al cliente samplewebapi
Para ver el esquema de autenficación de Keycloak nos situamos en Realm Setting
y pulsamos sonbre el Endpoints "OpenID Endpoint Configuration"
- Configuracion Aspnet. Con los datos obtenidos del esquema de keycloak configuramos nuestro cliente.
- Probar:
Accerder a la url http://localhost:10001/swagger/