autenticación para aplicación web personalizada con mod_auth_openidc

2

Tengo una aplicación web básica que se ejecuta en apache 2.2 y no tiene autenticación. El contenido del sitio es una página web estática.
Nuestra pequeña organización está trabajando actualmente en la implementación de mod_auth_openidc para todos los sitios web.
Quería implementar la autenticación mod_auth_openidc sobre la aplicación web estática básica.

¿Cómo puedo lograrlo?
Soy un novato en la configuración de apache y mod_auth_openidc . Busqué en Google algunos artículos para implementarlo, pero no pude encontrar ninguno. He creado una cuenta estática para mi aplicación en el servidor Oauth2.

¿Alguien puede señalarme en la dirección correcta sobre cómo habilitar la autenticación para mi aplicación de página web estática con la configuración mod_auth_openidc y mod_proxy ?

<Location />
   AuthType openid-connect
   Require valid-user
</Location>
OIDCProviderMetadataURL https://example.com/fss/.well-known/openid-configuration
OIDCClientID ExampleCorp_Prod_web01
OIDCClientSecret <client-secret>
OIDCRedirectURI http://<ip>/redirect_uri
OIDCScope "profile openid"
OIDCCryptoPassphrase [email protected]
OIDCCookiePath /
ProxyPass /  http://<ip>:8080/ nocanon
ProxyPassReverse / http://<ip>:8080/
ProxyRequests     Off
AllowEncodedSlashes on
<Proxy http://<ip>:8080/*>
</Proxy>
OIDCAuthNHeader X-Forwarded-User
OIDCRemoteUserClaim sub
OIDCClaimPrefix example_
LoadModule auth_openidc_module modules/mod_auth_openidc.so
2
  • ¿contra qué proveedor configurarías?
    Hans Z.
    16/04/2016 a las 9:35
  • Hola Hans, estamos usando pingfederate
    Tommy
    17 de abril de 2016 a las 4:51
4

Hay ejemplos en el archivo README de las páginas del proyecto Github: https://github.com/zmartzone/mod_auth_openidc . Suponiendo que las páginas web estáticas /examplecontinúen, en su ejemplo específico (PingFederate) sería algo como:

OIDCProviderMetadataURL https://<pingfederate-host>:9031/.well-known/openid-configuration

OIDCClientID <client-id-as-registered-with-pingfederate>
OIDCClientSecret <client-secret-as-registered-with-pingfederate>

OIDCRedirectURI https://<your-apache-host>/example/redirect_uri/
OIDCCryptoPassphrase <password>
OIDCScope "openid email profile"

<Location /example/>
   AuthType openid-connect
   Require valid-user
</Location>

Un ejemplo de trabajo completo basado en el entorno de OP:

Listen 80
User www
Group www
DocumentRoot /opt/local/apache2/htdocs/
ErrorLog "logs/error_log"
LogLevel info
ServerName example.org

LoadModule ssl_module modules/mod_ssl.so
LoadModule authz_user_module   modules/mod_authz_user.so
LoadModule auth_openidc_module modules/mod_auth_openidc.so

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<Location />
   AuthType openid-connect
   Require valid-user
</Location>

OIDCProviderMetadataURL https://accounts.google.com/.well-known/openid-configuration
OIDCClientID myclientid
OIDCClientSecret mysecret
OIDCRedirectURI http://example.org/protected/
OIDCScope "profile openid"
OIDCCryptoPassphrase [email protected]
OIDCCookiePath /

ProxyPass /  http://192.168.10.1:80/ nocanon
ProxyPassReverse / http://192.168.10.1:80/
ProxyRequests     Off
AllowEncodedSlashes on
<Proxy http://192.168.10.1:8080/*>
</Proxy>

OIDCAuthNHeader X-Forwarded-User
OIDCRemoteUserClaim sub
OIDCClaimPrefix example_
12
  • Hola Hans, gracias por la información brindada. Estoy tratando de usar una página de hola mundo detrás del inicio de sesión de openidc. He usado un ejemplo de openidc wiki 10.
    Tommy
    18/04/2016 a las 14:19
  • Estoy usando la siguiente URL para configurar una página web hello world con mod_auth_openidc + mod_proxy + hello world program github.com/pingidentity/mod_auth_openidc/… . pero veo "error de autorización 401"
    Tommy
    18/04/2016 a las 14:28
  • y los registros me muestran oidc_unsolicited_proto_state: no se pudo analizar JWT del estado: respuesta no solicitada no válida: [src / jose / apr_jwt.c: 177: apr_jwt_base64url_decode_object]: error de análisis JSON (json_loads): '[' o '{' esperado cerca de ' (l \\\ xb4 \ xe7r \ x12 \ x97 \ xec \ x0e \ x1d \ xea \ xde \ x8az \ xe5 | \ xccb \ xf0 \ xcd) \ n oidc_authorization_response_match_state: no se puede restaurar el estado oidc_handle_authorization respuesta estado_response: La URL de SSO predeterminada está configurada, enviando un error ... lo siento mucho por el registro mixto y los comentarios cortos. No puedo crear una línea siguiente en cada comentario
    Tommy
    18/04/2016 a las 14:28
  • no acceda a redirect_uri directamente; esa es una URL personalizada que solo usa el módulo en sí
    Hans Z.
    18/04/2016 a las 15:25
  • Oh, Dios mío, gracias ... casi ahí ... He correcto la URL que estoy ingresando ahora. pero sigo viendo "Error de autorización 401" y he configurado el nivel de registro para depurar. pero no veo ningún error relacionado con oidc ahora ... pero cuando desactivo la plantilla de configuración de oidc y reinicio httpd. Veo el hola mundo de vuelta. ¿Tengo que configurar alguna autenticación básica en una página web estática? Por favor recomiende
    Tommy
    18/04/2016 a las 17:29