Buscando artículos sobre " Aplicaciones"
13-junio-2023
admin

Utilización de Keycloak para Single Sign-On (SSO)

Single Sign-On se trata de un inicio de sesión unificado. Consiste en un procedimiento de autenticación que habilita a un usuario concreto acceso a distintos sistemas con una sola instancia de identificación.

Una herramienta sencilla que podemos utilizar para configurarnos un SSO que poder utilizar en nuestras aplicaciones se trata de Keycloak.

Ejemplo de uso:
Paso 1 – Ponemos iniciar keycloak mediante su imagen Docker mediante el siguiente comando:

 
 docker run -p 8081:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=password jboss/keycloak
-Dkeycloak.profile.feature.docker=enabled -b 0.0.0.0

Una vez iniciado podemos acceder a la aplicación mediante la url:
http://localhost:8081/auth/admin/master/console/

Paso 2 – Vamos a configurar un usuario y un cliente para poder probar el acceso:

Paso 2.1 – Crear Realm

Creación de un Realm
Crear Realm en keycloak

Pantalla de edición de un Realm
Crear Realm en keycloak

Paso 2.2 – Crear Client (es la aplicación que se va a conectar)

Creación de un cliente
Crear Cliente en keycloak

Crear Cliente en keycloak

Pantalla de edición de un cliente
Crear Cliente en keycloak

Paso 2.3 – Crear User y Rol (Se trata del usuario que se va a conectar y un rol que va a tener asignado)

Creación de un rol
Crear Rol en keycloak

Crear Rol en keycloak

Creación de un usuario
Crear User en keycloak

Crear User en keycloak

Crear User en keycloak

Crear User en keycloak

Pantalla de asignación del rol al usuario creado
Asignar Rol al User en keycloak

Paso 3 – Prueba obtención token.

 
curl --example --request POST 'http://localhost:8081/auth/realms/disastercode/protocol/openid-connect/token' 
--header 'Content-Type: application/x-www-form-urlencoded' 
--data-urlencode 'grant_type=password' 
--data-urlencode 'client_id=appClient' 
--data-urlencode 'client_secret=7YXN4WL8n3d0LUYejWGJWpG3xyJPUaPE' 
--data-urlencode 'username=admin' 
--data-urlencode 'password=admin'

Petición con postman
Prueba Postman

6-junio-2023
admin

Dockers para Oracle, OpenLdap y JBoss

Docker para la version de Oracle Standard Edition 12c Release 2 >>> https://github.com/MaksymBilenko/docker-oracle-12c
Este contenedor te permite utilizar una base de datos de oracle desde un contenedor. Esta en docker hub. Puedes ejecutarlo con el comando:

docker run -d -p 8080:8080 -p 1521:1521 quay.io/maksymbilenko/oracle-12c

Y los datos de acceso serían:

hostname: localhost
port: 1521
sid: xe
service name: xe
username: system
password: oracle

Docker para la última version de OpenLdap >>> https://hub.docker.com/r/bitnami/openldap/
Contenemos que te permite ejecutar un OpenLDAP. Es muy sencillo de ejecutar ya que incluye variables de entorno que si las declaras te permiten configurar el LDAP que se ejecuta. Ejemplo de ejecución:

docker run -p 1389:1389 -e LDAP_ROOT="dc=disastercode,dc=com,dc=es" --name openldap bitnami/openldap:latest

Docker para utilización de Jboss 7.2 >>> https://hub.docker.com/r/daggerok/jboss-eap-7.2

30-mayo-2023
admin

Obtener la IP de un contenedor de Docker

La forma más rápida de saber la ip asignada a un contenedor de docker es utilizar el comando docker inspect. Un ejemplo sería el siguiente:

23-mayo-2023
admin

LDAP con Apache Directory Studio

Una forma rápida de montar un LDAP para tus aplicaciones de desarrollo sería utilizar la herramienta Apache Directory Studio. Esta herramienta aparte de servir como cliente para conectarte a ldaps externos te permite montar uno en local de una forma bastante amigable.

Paso 1/ Creamos el servidor LDAP

Paso 2/ Configuramos el servidor LDAP. Lo vamos a dejar por defecto.

Paso 3/ Probamos a conectarnos a través del propio cliente.

16-mayo-2023
admin

Exportar e Importar claves GPG

Si tienes en tu equipo creadas claves GPG y quieres poder pasarlas a otro equipo. Puedes hacer los siguiente:

A la hora de importar la clave privada te saltará un popup que te pide la frase secreta con la que fue creada inicialmente.

9-mayo-2023
admin

Utilizar GPG para encriptación de ficheros

GNU Privacy Guard (GnuPG ) o GPG permite: cifrar y firmar sus datos/comunicaciones. Utilizando para ello sistema de gestión de claves.

A continuación expongo un ejemplo de como encriptar un fichero y luego desencriptarlo usando para ello GPG.

Paso 1/ Generamos una clave privada y pública.

Paso 2/ Encriptamos un fichero Prueba.txt

Paso 2/ Desencriptamos el fichero Prueba.txt.gpg que se nos había creado anteriormente.

25-marzo-2022
admin

Instalación Apache + Mysql + Php + PhpMyAdmin en ubuntu

Paso 1 – Actualizar la lista de paquetes disponibles y sus versiones ( sudo apt-get update )

Paso 2 – Instalar Apache ( sudo apt-get install apache2 )
Servicio: /etc/init.d/apache2 status
Url: http://127.0.0.1/ ó http://localhost/

Paso 3 – Instalar MySQL ( sudo apt-get install mysql-server )
Te va pedir una contraseña para el usuario root.
Servicio: systemctl status mysql

Paso 4 – Instalar PHP ( sudo apt install -y php )
Prueba:

Crear el fichero /var/www/html/info.php
Con el contenido < !--?php phpinfo();?-- >
Visitar la url: http://localhost/info.php

Paso 5 – Instalar PhpMyAdmin ( sudo apt-get install phpmyadmin )
Adicionalmente, hay que añadirlo en la configuración de apache2. Para ello:

//Descomentamos el alias en el fichero apache.conf /etc/phpmyadmin/apache.conf
Alias /phpmyadmin /usr/share/phpmyadmin
//Incluimos la configuración del phpmyadmin en el apache2.conf
echo "Include /etc/phpmyadmin/apache.conf" >> /etc/apache2/apache2.conf

A partir de la version 5.7 no se puede realizar login en phpMyAdmin con el usuario root. Por lo tanto es necesario crearte un usuario:

sudo mysql -p -u root
Enter password:

mysql> CREATE USER 'rpf'@'%' IDENTIFIED BY 'rpf';
Query OK, 0 rows affected (0,02 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'rpf'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0,02 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,01 sec)

Error: “Login sin una contraseña está prohibido por la configuración (Ver AllowNoPassword)”
Este error nos lo dará al intentar logarnos si no ponemos una contraseña.

La forma de solucionarlo es:

Descomentar la propiedad AllowNoPassword en el fichero /etc/phpmyadmin/config.inc.php
$cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
6-marzo-2022
admin

React tips and tricks

– React Developer Tools: Herramienta para depurar el código. Es un plugin que se instala en el navegador: Chrome, Firefox.


– Simple React Snippets: Plugin para el VSCode que te facilita mucho el desarrollo.


– Fragmentos: Es muy común que un componente devuelva múltiples elementos. La forma más cómoda de hacerlo es con los tag <> </>

class Columns extends React.Component {
  render() {
    return (
      <>        
        <td>Hello</td>
        <td>World</td>
      </>
          );
  }
}

– React Bootstrap: Framework de bootstrap adaptado a React. https://react-bootstrap.github.io/

npm install react-bootstrap bootstrap@5.1.3

– Axios: Axios es un cliente HTTP ligero basado en el servicio $http que se puede utilizar con react. Documentación 1 Documentación 2

npm install axios
7-febrero-2022
admin

Git Actions de GitHub (Parte 5)

Continuamos con algún ejemplo de GitHub Action

workflow.yml: Cuando se crea una rama nueva se modifica en ella la versión del pom.xml, añadiéndole un sufijo extraido del nombre de dicha rama.

name: On create branch - Rename version pom.xml
# Esta action se va a ejecutar cada vez que se crea una rama de main
on:
  create:
    branches:
      - main
jobs:
  # Tarea que se encargar de sacar el sufijo de la rama
  extract-suffix-name-branch:
      runs-on: ubuntu-latest
      #Lista de variables de salida del job
      outputs:
        suffix_name: ${{ steps.get-id.outputs.id }}
      steps:
        # Checkout repository
        - uses: actions/checkout@v2         
          
        # Utilizamos action que recupera los nombres de las ramas las ramas 
        - name: Get branch name
          id: branch-name
          uses: tj-actions/branch-names@v5.1
          
        # Mostramos por pantalla el nombre de la rama actual: 'prueba-100] description rama'
        - name: Running on the default branch.
          if: steps.branch-name.outputs.is_default == 'true'
          run: |
            echo "Running on default: ${{ steps.branch-name.outputs.current_branch }}"
        # Extraemos el sufijo que queremos utilizar para la version del pom: 'prueba-100'
        - id: get-id
          run: |
            id=$(echo ${{ steps.branch-name.outputs.current_branch }} | cut -d] -f1 | cut -d[ -f2)
            echo "::set-output name=id::$id"

  # Tarea que se encargar de sacar el prefijo de la versión del pom.xml  
  extract-preffix-name-pom-version:
      runs-on: ubuntu-latest
      #Lista de variables de salida del job
      outputs:
        preffix_name: ${{ steps.get-id.outputs.id }}
      steps:
        # Checkout repository
        - uses: actions/checkout@v2        
                
        #Tarea extrae a la variable version, la version existente en el pom.xml
        - name: Extract Maven project version
          working-directory: ./example3-gitactions
          run: echo ::set-output name=version::$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
          id: project_version
        - run: echo "Maven project version is ${{ steps.project_version.outputs.version }}"

        - id: get-id
          run: |
            id=$(echo ${{ steps.project_version.outputs.version }} | cut -d- -f1)
            echo "::set-output name=id::$id"       

  # Tarea que se encargar modificar la versión del pom.xml  
  rename-pom-version-and-commit:
      # Se le indica que depende de las dos tareas anteriores
      needs: [extract-preffix-name-pom-version, extract-suffix-name-branch]
      runs-on: ubuntu-latest
      steps:
        # Checkout repository
        - uses: actions/checkout@v2          
        
        # Instalamos jdk 11
        - name: Set up JDK 1.11
          uses: actions/setup-java@v1
          with:
            java-version: 1.11             
              
        # Realiza la modificación de la versión del pom.xml. 
        # Indicando generateBackupPoms a true nos generaría un backup del pom.xml que podríamos utilizar para restaurarlo al mergear la pull-request.
        - name: set version pom
          working-directory: ./example3-gitactions
          run: mvn -B versions:set -DnewVersion=${{ needs.extract-preffix-name-pom-version.outputs.preffix_name }}-${{ needs.extract-suffix-name-branch.outputs.suffix_name }}-SNAPSHOT -DgenerateBackupPoms=false

         # Realiza una prueba de que sigue compilando perfectamente. 
        - name: mvn package
          run: mvn -B package --file example3-gitactions/pom.xml
          
        # Subimos el cambio al repo. 
        - name: Commit new version pom.xml - branch
          run: |
            git config --global user.name 'Roberto'
            git config --global user.email 'roberto-pf@github.com'
            git add .
            git commit -am "Automated report"
            git push

Renombra Versión Pom.xml

Renombra Versión Pom.xml

Renombra Versión Pom.xml

Renombra Versión Pom.xml

Nota: Repositorio Github

Documentación action que extrae el nombre de la rama: tj-actions/branch-names

5-febrero-2022
admin

JQ

JQ es una herramienta de consola que nos permite parsear ficheros json. Te permite buscar dentro de un json y mostrar los resultados formateados en lugar de en una sola línea.

Existe una herramienta online donde puedes practicar expresiones: https://jqplay.org/
En el post anterior donde extraiamos de un Json la información necesaria para la Git Action se utilizó con este ejemplo.

Ejemplo de uso de JQ

Documentación oficial: https://stedolan.github.io/jq/

Herramienta para formateo de json: https://jsonformatter.curiousconcept.com

Páginas:12345678910»

Categorias

Linkedin