summaryrefslogtreecommitdiff
path: root/www/ap2-auth-mellon/patches/patch-aa
blob: bddb56d7e89204493c4aa51dce6e4eff782a058b (plain)
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
$NetBSD: patch-aa,v 1.1.1.1 2009/03/02 16:47:42 manu Exp $
Index: auth_mellon_cookie.c
===================================================================
--- auth_mellon_cookie.c	(revision 39)
+++ auth_mellon_cookie.c	(working copy)
@@ -140,13 +140,18 @@
 {
     const char *name;
     char *cookie;
+    int secure_cookie;
 
     if (id == NULL)
         return;
 
+    secure_cookie = ((am_dir_cfg_rec *)am_get_dir_cfg(r))->secure;
     name = am_cookie_name(r);
 
-    cookie = apr_psprintf(r->pool, "%s=%s; Version=1; Path=/", name, id);
+    cookie = apr_psprintf(r->pool, 
+                         "%s=%s; Version=1; Path=/; Domain=%s%s;", 
+                         name, id, r->server->server_hostname,
+                         secure_cookie ? "; HttpOnly; secure" : "");
     ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
                  "cookie_set: %s", cookie);
 
Index: auth_mellon.h
===================================================================
--- auth_mellon.h	(revision 39)
+++ auth_mellon.h	(working copy)
@@ -127,6 +127,7 @@
     am_decoder_t decoder;
 
     const char *varname;
+    int secure;
     apr_hash_t *require;
     apr_hash_t *envattr;
     const char *userattr;
Index: README
===================================================================
--- README	(revision 39)
+++ README	(working copy)
@@ -161,6 +161,13 @@
         # Default: "cookie"
 	MellonVariable "cookie"
 
+        # MellonSecureCookie enforces the HttpOnly and secure flags
+        # for the mod_mellon cookie
+        # Default: Off
+        MellonSecureCookie On
+
+        # MellonSecureCookie enforces the HttpOnly and secure flags
+        # for the mod_mellon cookie
         # MellonUser selects which attribute we should use for the username.
         # The username is passed on to other apache modules and to the web
         # page the user visits. NAME_ID is an attribute which we set to
@@ -257,7 +264,6 @@
         # certificate for the IdP.
         # Default: None set.
         MellonIdPCAFile /etc/apache2/mellon/ca.pem
-
 </Location>
 
 
Index: auth_mellon_config.c
===================================================================
--- auth_mellon_config.c	(revision 39)
+++ auth_mellon_config.c	(working copy)
@@ -39,6 +39,10 @@
  */
 static const char *default_cookie_name = "cookie";
 
+/* The default setting for cookie flags is to not enforce HttpOnly and secure
+ */
+static const int default_secure_cookie = 0;
+
 /* This is the default IdP initiated login location
  * the MellonDefaultLoginPath configuration directive if you change this.
  */
@@ -352,6 +356,14 @@
         " be 'mellon-cookie'."
         ),
     AP_INIT_TAKE1(
+        "MellonSecureCookie",
+        ap_set_flag_slot,
+        (void *)APR_OFFSETOF(am_dir_cfg_rec, secure),
+        OR_AUTHCFG,
+        "Whether the cookie set by auth_mellon should have HttpOnly and"
+        " secure flags set. Default is off."
+        ),
+    AP_INIT_TAKE1(
         "MellonUser",
         ap_set_string_slot,
         (void *)APR_OFFSETOF(am_dir_cfg_rec, userattr),
@@ -480,6 +492,7 @@
     dir->decoder = am_decoder_default;
 
     dir->varname = default_cookie_name;
+    dir->secure = default_secure_cookie;
     dir->require   = apr_hash_make(p);
     dir->envattr   = apr_hash_make(p);
     dir->userattr  = default_user_attribute;
@@ -541,6 +554,12 @@
                         add_cfg->varname :
                         base_cfg->varname);
 
+
+    new_cfg->secure = (add_cfg->secure != default_secure_cookie ?
+                        add_cfg->secure :
+                        base_cfg->secure);
+
+
     new_cfg->require = apr_hash_copy(p,
                                      (apr_hash_count(add_cfg->require) > 0) ?
                                      add_cfg->require :