summaryrefslogtreecommitdiff
path: root/www/ap2-auth-mellon
diff options
context:
space:
mode:
authormanu <manu@pkgsrc.org>2016-10-18 15:13:41 +0000
committermanu <manu@pkgsrc.org>2016-10-18 15:13:41 +0000
commitb46c24290ec3a500095dd6b7d2737c30bc7fa063 (patch)
treea44ec42d0ffb1b4e112432d053a035e8d79b9101 /www/ap2-auth-mellon
parent7e6f7539e9c07ca105ff0600e8dac15ee821a89e (diff)
downloadpkgsrc-b46c24290ec3a500095dd6b7d2737c30bc7fa063.tar.gz
Do not redirect unauthenticated AJAX request to the IdP
When MellonEnable is "auth" and we get an unauthenticated AJAX request (identified by the X-Request-With: XMLHttpRequest HTTP header), fail with HTTP code 403 Forbidden instead of redirecting to the IdP. This saves resources, as the client has no opportunity to interract with the user to complete authentification.
Diffstat (limited to 'www/ap2-auth-mellon')
-rw-r--r--www/ap2-auth-mellon/Makefile4
-rw-r--r--www/ap2-auth-mellon/distinfo3
-rw-r--r--www/ap2-auth-mellon/patches/patch-034767
3 files changed, 71 insertions, 3 deletions
diff --git a/www/ap2-auth-mellon/Makefile b/www/ap2-auth-mellon/Makefile
index eed80bde9a3..6af925195aa 100644
--- a/www/ap2-auth-mellon/Makefile
+++ b/www/ap2-auth-mellon/Makefile
@@ -1,9 +1,9 @@
-# $NetBSD: Makefile,v 1.35 2016/10/07 18:26:12 adam Exp $
+# $NetBSD: Makefile,v 1.36 2016/10/18 15:13:41 manu Exp $
#
DISTNAME= mod_auth_mellon-0.12.0
PKGNAME= ${APACHE_PKG_PREFIX}-${DISTNAME:S/mod_//:S/_/-/g}
-PKGREVISION= 2
+PKGREVISION= 3
CATEGORIES= www security
MASTER_SITES= https://github.com/UNINETT/mod_auth_mellon/releases/download/v${DISTNAME:C/.*-//}/
diff --git a/www/ap2-auth-mellon/distinfo b/www/ap2-auth-mellon/distinfo
index df84839f148..962768b64d7 100644
--- a/www/ap2-auth-mellon/distinfo
+++ b/www/ap2-auth-mellon/distinfo
@@ -1,6 +1,7 @@
-$NetBSD: distinfo,v 1.15 2016/03/14 09:58:57 manu Exp $
+$NetBSD: distinfo,v 1.16 2016/10/18 15:13:41 manu Exp $
SHA1 (mod_auth_mellon-0.12.0.tar.gz) = 3d5cd4137154a7c848d8f3121e6497b88dc5f23e
RMD160 (mod_auth_mellon-0.12.0.tar.gz) = 7ef278de6f4d0f0669d99c113706dc63d64f6fbc
Size (mod_auth_mellon-0.12.0.tar.gz) = 136754 bytes
SHA1 (patch-0274) = e523b560f8220352090db686a32a5f81f6579fda
+SHA1 (patch-0347) = d14d5a20d05fae3962e5168a0b23ab55835452ca
diff --git a/www/ap2-auth-mellon/patches/patch-0347 b/www/ap2-auth-mellon/patches/patch-0347
new file mode 100644
index 00000000000..d5ef0f0c587
--- /dev/null
+++ b/www/ap2-auth-mellon/patches/patch-0347
@@ -0,0 +1,67 @@
+From 78fe67641918016a6108e325be351156999109c9 Mon Sep 17 00:00:00 2001
+From: Emmanuel Dreyfus <manu@netbsd.org>
+Date: Tue, 18 Oct 2016 01:42:53 +0200
+Subject: [PATCH] Do not redirect unauthenticated AJAX request to the IdP
+
+When MellonEnable is "auth" and we get an unauthenticated AJAX
+request (identified by the X-Request-With: XMLHttpRequest HTTP
+header), fail with HTTP code 403 Forbidden instead of redirecting
+to the IdP. This saves resources, as the client has no opportunity
+to interract with the user to complete authentification.
+---
+ README | 6 ++++++
+ auth_mellon_handler.c | 14 ++++++++++++++
+ 2 files changed, 20 insertions(+)
+
+diff --git README README
+index ec323ab..5960cc8 100644
+--- README
++++ README
+@@ -166,6 +166,12 @@ MellonPostCount 100
+ # return a 403 Forbidden error. If he isn't authenticated
+ # then we will redirect him to the login page of the IdP.
+ #
++ # There is a special handling of AJAX requests, that are
++ # identified by the "X-Request-With: XMLHttpRequest" HTTP
++ # header. Since no user interaction can happen there,
++ # we always fail unauthenticated (not logged in) requests
++ # with a 403 Forbidden error without redirecting to the IdP.
++ #
+ # Default: MellonEnable "off"
+ MellonEnable "auth"
+
+diff --git auth_mellon_handler.c auth_mellon_handler.c
+index 0457189..a55828a 100644
+--- auth_mellon_handler.c
++++ auth_mellon_handler.c
+@@ -3491,6 +3491,7 @@ int am_auth_mellon_user(request_rec *r)
+ am_dir_cfg_rec *dir = am_get_dir_cfg(r);
+ int return_code = HTTP_UNAUTHORIZED;
+ am_cache_entry_t *session;
++ const char *ajax_header;
+
+ if (r->main) {
+ /* We are a subrequest. Trust the main request to have
+@@ -3534,6 +3535,19 @@ int am_auth_mellon_user(request_rec *r)
+ am_release_request_session(r, session);
+ }
+
++ /*
++ * If this is an AJAX request, we cannot proceed to the IdP,
++ * Just fail early to save our resources
++ */
++ ajax_header = apr_table_get(r->headers_in, "X-Request-With");
++ if (ajax_header != NULL &&
++ strcmp(ajax_header, "XMLHttpRequest") == 0) {
++ ap_log_rerror(APLOG_MARK, APLOG_INFO, 0, r,
++ "Deny unauthenticated X-Request-With XMLHttpRequest "
++ "(AJAX) request");
++ return HTTP_FORBIDDEN;
++ }
++
+ #ifdef HAVE_ECP
+ /*
+ * If PAOS set a flag on the request indicating we're
+--
+2.3.2
+