El PO quiere poder activar cabeceras CORS en OpenID Connect

Descripción

Muchos de los SPs de OpenID Connect que utilizan el flujo Implicit son aplicaciones íntegras en JavaScript. Por lo que las peticiones que realizarán a los puntos de entrada de OpenID Connect en adAS a través del navegador y, posiblemente, desde otros dominios.
Es necesario poder indicar en un SP de OpenID Connect qué URIs (formato "protocolo://dominio") se deben permitir en las cabeceras CORS.
Cuando llegue una petición a cualquier punto de entrada de OpenID Connect se debe mirar la configuración de los diferentes SPs de OpenID Connect y generar, si fuera el caso, las cabeceras.
Las cabeceras en configuración de Apache (a modo de ejemplo) son:

La primera cabecera contendrá la lista de URIs.

Cómo Probarlo

1. Configurar CORS para el SP OpenID Connect "test_sp_openidconnect", editando sus metadatos:

  • Control de acceso HTTP (CORS) - Habilitar CORS: "Sí"

  • Control de acceso HTTP (CORS) - Cabecera HTTP 'Origin': "https://www.domain1.com"

  • Control de acceso HTTP (CORS) - URI para cabecera CORS: "https://www.domain2.com"
    2. Verificar en los distintos puntos de entrada de OpenID Connect que se generan bien las cabeceras
    2.1. Punto de entrada "/OAUTH2/.well-known/jwks.json":

  • Ejecutar:
    curl -k -v 'https://{ADAS_URL_BASE}/OAUTH2/.well-known/jwks.json' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:76.0) Gecko/20100101 Firefox/76.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8' -H 'Accept-Language: es-ES' --compressed -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' -H 'Origin: https://www.domain1.com'

  • Comprobar que el resultado es un JSON y que se incluyen las siguientes cabeceras:

    • Access-Control-Allow-Origin: https://www.domain2.com

    • Access-Control-Allow-Credentials: true

    • Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Authorization

    • Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE

    • Allow: GET, POST, OPTIONS, PUT, DELETE
      2.2. Punto de entrada de 'OpenID Connect Implicit':

  • Ejecutar:
    curl -k -v 'https://{ADAS_URL_BASE}/OAUTH2/authserver.php?client_id=test_sp_openidconnect&redirect_uri=https%3A%2F%2Fwww.domain1.com%2Ftest_sp_openidconnect%2Fauth%2Fsigninwin%2Fmain&response_type=id_token%20token&scope=openid%20profile%20email%20api%20groups-api&state=c574108c58d742e1a34246812ddef389&nonce=37b8e1ba92e4419abf7d27839ec8f83c&prompt=login' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:76.0) Gecko/20100101 Firefox/76.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8' -H 'Accept-Language: es-ES' --compressed -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' -H 'Origin: https://www.domain1.com'

  • Comprobar que el resultado es un JSON y que se incluyen las siguientes cabeceras:

    • Access-Control-Allow-Origin: https://www.domain2.com

    • Access-Control-Allow-Credentials: true

    • Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Authorization

    • Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE

    • Allow: GET, POST, OPTIONS, PUT, DELETE
      2.3. Punto de entrada de 'OpenID Connect Authorization Code':

  • Ejecutar:
    curl -k -v 'https://{ADAS_URL_BASE}/OAUTH2/authserver.php?client_id=test_sp_openidconnect&redirect_uri=https%3A%2F%2Fwww.domain1.com%2Ftest_sp_openidconnect%2Fauth%2Fsigninwin%2Fmain&response_type=code&scope=openid%20profile%20email%20api%20groups-api&state=ed253e93ef3a4448a820b153d92f5a6b&code_challenge=U303b-D-HISldYje9MvkOBDT107mQ0fPdldLh307tEk&code_challenge_method=S256&prompt=login&response_mode=query' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:76.0) Gecko/20100101 Firefox/76.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8' -H 'Accept-Language: es-ES' --compressed -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' -H 'Origin: https://www.domain1.com'

Responsable

Cándido Rodriguez

Informador

Cándido Rodriguez

Epic/Theme

None

Trazabilidad

Business Value

95

ID RQU

None

Story Points

3
Configure