Aplicación de la seguridad web

Aprenda a integrar el servicio de identidad de Keycloak en el endpoint web para el control de acceso en el microservicio desarrollado con la plataforma Devprime. Keycloak es compatible con OpenID Connect / OAuth 2.0 / JWT en la protección de páginas web y API’s.

Durante este escenario, usaremos el adaptador de seguridad de la pila de Devprime para habilitar la configuración de seguridad de modo que, cuando haya una solicitud de acceso, se requiera la autenticación del usuario de forma centralizada de Keycloak.

Para avanzar en este escenario, es esencial tener una instancia de Keycloak y seguir los pasos que se indican a continuación:

  1. Cree una instancia de Keycloak siguiendo los procedimientos indicados.

  2. Instale la CLI de Devprime.

  3. Creación de un microservicio para su uso en la demostración ms-sec-order
    dp new ms-order --state mongodb --stream rabbitmq --marketplace order --init

  4. Una vez completado, puede ejecutar el microservicio. Luego termine.
    .\run.ps1 o ./run.sh (Linux, macOS)

  5. Adición de una plantilla web para su uso en la demostración. Esto creará algunas páginas web
    para usar en la demostración.
    dp add web login

Después de ejecutarlo, tendremos un nuevo Endpoint llamado “/private” que ya cuenta con el atributo “Authorize” necesario para indicar que esa url requiere autenticación. El extracto del siguiente archivo “code src/App/appsettings.json” muestra este escenario
con las direcciones URL /private, /login y /logout.

Para verlo desde Visual Studio Code:
code src/App/appsettings.json

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    public override void Endpoints(WebApplication app)
    {
        app.MapGet("/private", [Authorize]
        (ClaimsPrincipal user) =>
        {
            StringBuilder sb = new StringBuilder();
            foreach (var claim in user.Claims)
            {
                sb.Append($"{claim.Type}={claim.Value}{System.Environment.NewLine}");
            }
            return sb.ToString();
        });
        app.MapGet("/login", async (HttpContext http, string returnUrl) =>
        {
            if (string.IsNullOrWhiteSpace(returnUrl))
                returnUrl = "/";
            await http.ChallengeAsync(SecurityConfig.Identity.AuthenticationScheme, new AuthenticationProperties()
            {RedirectUri = returnUrl});
        });
        app.MapGet("/logout", [Authorize]
        async (HttpContext http) =>
        {
            await http.SignOutAsync(SecurityConfig.Identity.AuthenticationScheme, new AuthenticationProperties{RedirectUri = "/"});
            await http.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
        });
    }
  1. Abra el archivo de configuración e incluya en el adaptador de seguridad los parámetros de Keycloak obtenidos en el ítem 1 de este paso a paso cambiando los ítems “ClientID / ClientSecret / LogoutUri / Audience”

IMPORTANTE:
Coloque el mismo valor que el ID de cliente en el campo Audiencia como se muestra en el ejemplo siguiente y asegúrese de que
que EnableOIDC se establece en “true”.

Procedimiento para agregar la configuración de seguridad por OIDC:

a) Abrir desde Visual Studio Code
code src/App/appsettings.json

b) Copie el código a continuación y colóquelo en el appsettings.json

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
  "Devprime_Security": {
    "Enable": "true",
    "Identity": {
      "Enable": "true",
      "Type": "keycloak",
      "Domain": "http://localhost:8080/realms/devprime",
      "ClientId": "myapp",
      "ClientSecret": "your-clien-secret",
      "EnableOIDC": "true",
      "AuthenticationScheme": "OpenIdConnect",
      "Audience":"myapp",
      "LogoutUri": "http://localhost:8080/auth/realms/devprime/protocol/openid-connect/logout?redirect_uri=https%3A%2F%2Flocalhost%3A5001",
      "Scopes": "openid;email"
    }
  },
  1. Ejecute la aplicación y abra https://localhost:5001 para ver los nuevos enlaces agregados.

  2. Vaya al enlace privado y se le dirigirá a la autenticación
    Capa de llaves de bienvenida

  3. Inicie sesión o regístrese en Keycloak en “Registrarse”.
    Capa de llaves de bienvenida

  4. En caso de éxito, se liberará la página web privada.
    Capa de llaves de bienvenida

Próximos pasos:

Ha protegido una aplicación web con Keycloak y un microservicio con la plataforma Devprime. Felicidades🚀🚀🚀

Última modificación April 11, 2024 (cc33f7e6)