项目作者: juandepalo

项目描述 :
Configuracion de seguridad oauth2 con Keycloak y aspnetcore
高级语言: C#
项目地址: git://github.com/juandepalo/Keycloak-aspnetcore.git
创建时间: 2019-07-26T05:02:58Z
项目社区:https://github.com/juandepalo/Keycloak-aspnetcore

开源协议:

下载


Keycloak / ASP.NET Core / Swagger Nswag

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.

Resumen

  • Server
    • ASP.NET Core 2.2
    • Docker: keycloack server con base de datos mysql
  • Client
    • Nswag. interfaz de usuario y el generador de Swagger

Setup

  1. Instalación:

  2. Clonar el proyecto:
    git clone https://github.com/juandepalo/Keycloak-aspnetcore.git

  1. Situarse en el directorio:

    cd ./Keycloak-aspnetcore

  2. ejecutar:

    docker-compose -f "docker-compose.yml" up -d --build --remove-orphans

  3. Abrir el navegador http://localhost:8080 http://localhost:10001.

http://localhost:8080

http://localhost:10001

Configuración

  1. Modificacion de host.

    1. 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.

      nombreserviciokeycloak

  1. modificación fichero hosts:
  2. `127.0.0.1 localhost keycloalocalhost`
  1. Configuracion de Keycloak.
    1. 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
login Consola

Para nuestro entorno de pruebas crearemos nuestro Realm “Demo”, para ello pulsamos sobre la add Realm
creacion Realm

Vamos a la pestaña “Security Defenses” y permitimos todos los origenes
X-Frame-Options : ALLOW-FROM *
Seguridad Realm

Importamos el cliente keycloak-Import/realm-export.json
Importar Cliente

Validamos configuración
Configuración Cliente

Generamos Secret key que debemos copiar para configurar el proyecto de Aspnet.core
Creación de Secret

Para consumir la api necestiamos añadir un usuario al cliente samplewebapi
Creación Usuario

Le asignamos una contraseña
Cambio contraseña
Creacion contraseña Usuario
confirmacion cambio contrasñea

Validamos los Roles
Roles Usuario

Para ver el esquema de autenficación de Keycloak nos situamos en Realm Setting
Configuracion Realm

y pulsamos sonbre el Endpoints “OpenID Endpoint Configuration”
Datos Configuración

  1. Configuracion Aspnet.
    Con los datos obtenidos del esquema de keycloak configuramos nuestro cliente.

Configuración Aspnet

  1. Probar:

Accerder a la url http://localhost:10001/swagger/
swagger

Autorización

Validar datos cliente

Pantalla login

Usuario SampleWebApi

Autentificación correcta

Prueba consumo api

Resultado

Enlaces

Visual studio Nswag

Nswag

Add OAuth2 authorization (OpenAPI 3)

KeyCloak Documentacion