Skip to content

Commit 0e24e99

Browse files
committed
Added patches for some issues with the oic and oidc-provider modules, and updated a patch for request-profiler.
- Legacy-Id: 17920
1 parent 65c919b commit 0e24e99

4 files changed

Lines changed: 355 additions & 3 deletions
Lines changed: 289 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,289 @@
1+
diff -ur oidc_provider.orig/migrations/0001_initial.py oidc_provider/migrations/0001_initial.py
2+
--- oidc_provider.orig/migrations/0001_initial.py 2020-05-22 15:09:21.005044205 +0200
3+
+++ oidc_provider/migrations/0001_initial.py 2020-05-22 15:09:40.305603247 +0200
4+
@@ -18,8 +18,8 @@
5+
fields=[
6+
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
7+
('name', models.CharField(default=b'', max_length=100)),
8+
- ('client_id', models.CharField(unique=True, max_length=255)),
9+
- ('client_secret', models.CharField(unique=True, max_length=255)),
10+
+ ('client_id', models.CharField(unique=True, max_length=228)),
11+
+ ('client_secret', models.CharField(unique=True, max_length=228)),
12+
('response_type', models.CharField(max_length=30, choices=[
13+
(b'code', b'code (Authorization Code Flow)'), (b'id_token', b'id_token (Implicit Flow)'),
14+
(b'id_token token', b'id_token token (Implicit Flow)')])),
15+
@@ -35,7 +35,7 @@
16+
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
17+
('expires_at', models.DateTimeField()),
18+
('_scope', models.TextField(default=b'')),
19+
- ('code', models.CharField(unique=True, max_length=255)),
20+
+ ('code', models.CharField(unique=True, max_length=228)),
21+
('client', models.ForeignKey(to='oidc_provider.Client', on_delete=models.CASCADE)),
22+
],
23+
options={
24+
@@ -49,7 +49,7 @@
25+
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
26+
('expires_at', models.DateTimeField()),
27+
('_scope', models.TextField(default=b'')),
28+
- ('access_token', models.CharField(unique=True, max_length=255)),
29+
+ ('access_token', models.CharField(unique=True, max_length=228)),
30+
('_id_token', models.TextField()),
31+
('client', models.ForeignKey(to='oidc_provider.Client', on_delete=models.CASCADE)),
32+
],
33+
@@ -62,26 +62,26 @@
34+
name='UserInfo',
35+
fields=[
36+
('user', models.OneToOneField(primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
37+
- ('given_name', models.CharField(max_length=255, null=True, blank=True)),
38+
- ('family_name', models.CharField(max_length=255, null=True, blank=True)),
39+
- ('middle_name', models.CharField(max_length=255, null=True, blank=True)),
40+
- ('nickname', models.CharField(max_length=255, null=True, blank=True)),
41+
+ ('given_name', models.CharField(max_length=228, null=True, blank=True)),
42+
+ ('family_name', models.CharField(max_length=228, null=True, blank=True)),
43+
+ ('middle_name', models.CharField(max_length=228, null=True, blank=True)),
44+
+ ('nickname', models.CharField(max_length=228, null=True, blank=True)),
45+
('gender', models.CharField(max_length=100, null=True, choices=[(b'F', b'Female'), (b'M', b'Male')])),
46+
('birthdate', models.DateField(null=True)),
47+
('zoneinfo', models.CharField(default=b'', max_length=100, null=True, blank=True)),
48+
- ('preferred_username', models.CharField(max_length=255, null=True, blank=True)),
49+
+ ('preferred_username', models.CharField(max_length=228, null=True, blank=True)),
50+
('profile', models.URLField(default=b'', null=True, blank=True)),
51+
('picture', models.URLField(default=b'', null=True, blank=True)),
52+
('website', models.URLField(default=b'', null=True, blank=True)),
53+
('email_verified', models.NullBooleanField(default=False)),
54+
('locale', models.CharField(max_length=100, null=True, blank=True)),
55+
- ('phone_number', models.CharField(max_length=255, null=True, blank=True)),
56+
+ ('phone_number', models.CharField(max_length=228, null=True, blank=True)),
57+
('phone_number_verified', models.NullBooleanField(default=False)),
58+
- ('address_street_address', models.CharField(max_length=255, null=True, blank=True)),
59+
- ('address_locality', models.CharField(max_length=255, null=True, blank=True)),
60+
- ('address_region', models.CharField(max_length=255, null=True, blank=True)),
61+
- ('address_postal_code', models.CharField(max_length=255, null=True, blank=True)),
62+
- ('address_country', models.CharField(max_length=255, null=True, blank=True)),
63+
+ ('address_street_address', models.CharField(max_length=228, null=True, blank=True)),
64+
+ ('address_locality', models.CharField(max_length=228, null=True, blank=True)),
65+
+ ('address_region', models.CharField(max_length=228, null=True, blank=True)),
66+
+ ('address_postal_code', models.CharField(max_length=228, null=True, blank=True)),
67+
+ ('address_country', models.CharField(max_length=228, null=True, blank=True)),
68+
('updated_at', models.DateTimeField(auto_now=True, null=True)),
69+
],
70+
options={
71+
diff -ur oidc_provider.orig/migrations/0003_code_nonce.py oidc_provider/migrations/0003_code_nonce.py
72+
--- oidc_provider.orig/migrations/0003_code_nonce.py 2020-05-22 15:09:21.005044205 +0200
73+
+++ oidc_provider/migrations/0003_code_nonce.py 2020-05-22 15:09:40.297603016 +0200
74+
@@ -14,6 +14,6 @@
75+
migrations.AddField(
76+
model_name='code',
77+
name='nonce',
78+
- field=models.CharField(default=b'', max_length=255, blank=True),
79+
+ field=models.CharField(default=b'', max_length=228, blank=True),
80+
),
81+
]
82+
diff -ur oidc_provider.orig/migrations/0005_token_refresh_token.py oidc_provider/migrations/0005_token_refresh_token.py
83+
--- oidc_provider.orig/migrations/0005_token_refresh_token.py 2020-05-22 15:09:21.005044205 +0200
84+
+++ oidc_provider/migrations/0005_token_refresh_token.py 2020-05-22 15:09:40.269602205 +0200
85+
@@ -14,7 +14,7 @@
86+
migrations.AddField(
87+
model_name='token',
88+
name='refresh_token',
89+
- field=models.CharField(max_length=255, unique=True, null=True),
90+
+ field=models.CharField(max_length=228, unique=True, null=True),
91+
preserve_default=True,
92+
),
93+
]
94+
diff -ur oidc_provider.orig/migrations/0012_auto_20160405_2041.py oidc_provider/migrations/0012_auto_20160405_2041.py
95+
--- oidc_provider.orig/migrations/0012_auto_20160405_2041.py 2020-05-22 15:09:21.005044205 +0200
96+
+++ oidc_provider/migrations/0012_auto_20160405_2041.py 2020-05-22 15:09:40.289602784 +0200
97+
@@ -15,6 +15,6 @@
98+
migrations.AlterField(
99+
model_name='client',
100+
name='client_secret',
101+
- field=models.CharField(blank=True, default=b'', max_length=255),
102+
+ field=models.CharField(blank=True, default=b'', max_length=228),
103+
),
104+
]
105+
diff -ur oidc_provider.orig/migrations/0013_auto_20160407_1912.py oidc_provider/migrations/0013_auto_20160407_1912.py
106+
--- oidc_provider.orig/migrations/0013_auto_20160407_1912.py 2020-05-22 15:09:21.005044205 +0200
107+
+++ oidc_provider/migrations/0013_auto_20160407_1912.py 2020-05-22 15:09:40.277602437 +0200
108+
@@ -15,11 +15,11 @@
109+
migrations.AddField(
110+
model_name='code',
111+
name='code_challenge',
112+
- field=models.CharField(max_length=255, null=True),
113+
+ field=models.CharField(max_length=228, null=True),
114+
),
115+
migrations.AddField(
116+
model_name='code',
117+
name='code_challenge_method',
118+
- field=models.CharField(max_length=255, null=True),
119+
+ field=models.CharField(max_length=228, null=True),
120+
),
121+
]
122+
diff -ur oidc_provider.orig/migrations/0015_change_client_code.py oidc_provider/migrations/0015_change_client_code.py
123+
--- oidc_provider.orig/migrations/0015_change_client_code.py 2020-05-22 15:09:21.005044205 +0200
124+
+++ oidc_provider/migrations/0015_change_client_code.py 2020-05-22 15:09:40.281602552 +0200
125+
@@ -20,7 +20,7 @@
126+
migrations.AlterField(
127+
model_name='client',
128+
name='client_secret',
129+
- field=models.CharField(blank=True, default='', max_length=255),
130+
+ field=models.CharField(blank=True, default='', max_length=228),
131+
),
132+
migrations.AlterField(
133+
model_name='client',
134+
@@ -63,7 +63,7 @@
135+
migrations.AlterField(
136+
model_name='code',
137+
name='nonce',
138+
- field=models.CharField(blank=True, default='', max_length=255),
139+
+ field=models.CharField(blank=True, default='', max_length=228),
140+
),
141+
migrations.AlterField(
142+
model_name='token',
143+
diff -ur oidc_provider.orig/migrations/0016_userconsent_and_verbosenames.py oidc_provider/migrations/0016_userconsent_and_verbosenames.py
144+
--- oidc_provider.orig/migrations/0016_userconsent_and_verbosenames.py 2020-05-22 15:09:21.005044205 +0200
145+
+++ oidc_provider/migrations/0016_userconsent_and_verbosenames.py 2020-05-22 15:14:37.858221152 +0200
146+
@@ -20,7 +20,7 @@
147+
model_name='userconsent',
148+
name='date_given',
149+
field=models.DateTimeField(
150+
- default=datetime.datetime(2016, 6, 10, 17, 53, 48, 889808, tzinfo=utc), verbose_name='Date Given'),
151+
+ default=datetime.datetime(2016, 6, 10, 17, 53, 48, 889808), verbose_name='Date Given'),
152+
preserve_default=False,
153+
),
154+
migrations.AlterField(
155+
@@ -32,12 +32,12 @@
156+
migrations.AlterField(
157+
model_name='client',
158+
name='client_id',
159+
- field=models.CharField(max_length=255, unique=True, verbose_name='Client ID'),
160+
+ field=models.CharField(max_length=228, unique=True, verbose_name='Client ID'),
161+
),
162+
migrations.AlterField(
163+
model_name='client',
164+
name='client_secret',
165+
- field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='Client SECRET'),
166+
+ field=models.CharField(blank=True, default=b'', max_length=228, verbose_name='Client SECRET'),
167+
),
168+
migrations.AlterField(
169+
model_name='client',
170+
@@ -84,17 +84,17 @@
171+
migrations.AlterField(
172+
model_name='code',
173+
name='code',
174+
- field=models.CharField(max_length=255, unique=True, verbose_name='Code'),
175+
+ field=models.CharField(max_length=228, unique=True, verbose_name='Code'),
176+
),
177+
migrations.AlterField(
178+
model_name='code',
179+
name='code_challenge',
180+
- field=models.CharField(max_length=255, null=True, verbose_name='Code Challenge'),
181+
+ field=models.CharField(max_length=228, null=True, verbose_name='Code Challenge'),
182+
),
183+
migrations.AlterField(
184+
model_name='code',
185+
name='code_challenge_method',
186+
- field=models.CharField(max_length=255, null=True, verbose_name='Code Challenge Method'),
187+
+ field=models.CharField(max_length=228, null=True, verbose_name='Code Challenge Method'),
188+
),
189+
migrations.AlterField(
190+
model_name='code',
191+
@@ -109,7 +109,7 @@
192+
migrations.AlterField(
193+
model_name='code',
194+
name='nonce',
195+
- field=models.CharField(blank=True, default=b'', max_length=255, verbose_name='Nonce'),
196+
+ field=models.CharField(blank=True, default=b'', max_length=228, verbose_name='Nonce'),
197+
),
198+
migrations.AlterField(
199+
model_name='code',
200+
@@ -135,7 +135,7 @@
201+
migrations.AlterField(
202+
model_name='token',
203+
name='access_token',
204+
- field=models.CharField(max_length=255, unique=True, verbose_name='Access Token'),
205+
+ field=models.CharField(max_length=228, unique=True, verbose_name='Access Token'),
206+
),
207+
migrations.AlterField(
208+
model_name='token',
209+
@@ -151,7 +151,7 @@
210+
migrations.AlterField(
211+
model_name='token',
212+
name='refresh_token',
213+
- field=models.CharField(max_length=255, null=True, unique=True, verbose_name='Refresh Token'),
214+
+ field=models.CharField(max_length=228, null=True, unique=True, verbose_name='Refresh Token'),
215+
),
216+
migrations.AlterField(
217+
model_name='token',
218+
diff -ur oidc_provider.orig/migrations/0017_auto_20160811_1954.py oidc_provider/migrations/0017_auto_20160811_1954.py
219+
--- oidc_provider.orig/migrations/0017_auto_20160811_1954.py 2020-05-22 15:09:21.005044205 +0200
220+
+++ oidc_provider/migrations/0017_auto_20160811_1954.py 2020-05-22 15:09:40.329603942 +0200
221+
@@ -20,7 +20,7 @@
222+
migrations.AlterField(
223+
model_name='client',
224+
name='client_secret',
225+
- field=models.CharField(blank=True, default='', max_length=255, verbose_name='Client SECRET'),
226+
+ field=models.CharField(blank=True, default='', max_length=228, verbose_name='Client SECRET'),
227+
),
228+
migrations.AlterField(
229+
model_name='client',
230+
@@ -56,7 +56,7 @@
231+
migrations.AlterField(
232+
model_name='code',
233+
name='nonce',
234+
- field=models.CharField(blank=True, default='', max_length=255, verbose_name='Nonce'),
235+
+ field=models.CharField(blank=True, default='', max_length=228, verbose_name='Nonce'),
236+
),
237+
migrations.AlterField(
238+
model_name='token',
239+
diff -ur oidc_provider.orig/migrations/0018_hybridflow_and_clientattrs.py oidc_provider/migrations/0018_hybridflow_and_clientattrs.py
240+
--- oidc_provider.orig/migrations/0018_hybridflow_and_clientattrs.py 2020-05-22 15:09:21.005044205 +0200
241+
+++ oidc_provider/migrations/0018_hybridflow_and_clientattrs.py 2020-05-22 15:09:40.317603595 +0200
242+
@@ -15,7 +15,7 @@
243+
migrations.AddField(
244+
model_name='client',
245+
name='contact_email',
246+
- field=models.CharField(blank=True, default='', max_length=255, verbose_name='Contact Email'),
247+
+ field=models.CharField(blank=True, default='', max_length=228, verbose_name='Contact Email'),
248+
),
249+
migrations.AddField(
250+
model_name='client',
251+
@@ -30,13 +30,13 @@
252+
blank=True,
253+
default='',
254+
help_text='External reference to the privacy policy of the client.',
255+
- max_length=255,
256+
+ max_length=228,
257+
verbose_name='Terms URL'),
258+
),
259+
migrations.AddField(
260+
model_name='client',
261+
name='website_url',
262+
- field=models.CharField(blank=True, default='', max_length=255, verbose_name='Website URL'),
263+
+ field=models.CharField(blank=True, default='', max_length=228, verbose_name='Website URL'),
264+
),
265+
migrations.AlterField(
266+
model_name='client',
267+
diff -ur oidc_provider.orig/migrations/0019_auto_20161005_1552.py oidc_provider/migrations/0019_auto_20161005_1552.py
268+
--- oidc_provider.orig/migrations/0019_auto_20161005_1552.py 2020-05-22 15:09:21.005044205 +0200
269+
+++ oidc_provider/migrations/0019_auto_20161005_1552.py 2020-05-22 15:09:40.325603827 +0200
270+
@@ -15,6 +15,6 @@
271+
migrations.AlterField(
272+
model_name='client',
273+
name='client_secret',
274+
- field=models.CharField(blank=True, max_length=255, verbose_name='Client SECRET'),
275+
+ field=models.CharField(blank=True, max_length=228, verbose_name='Client SECRET'),
276+
),
277+
]
278+
diff -ur oidc_provider.orig/migrations/0021_refresh_token_not_unique.py oidc_provider/migrations/0021_refresh_token_not_unique.py
279+
--- oidc_provider.orig/migrations/0021_refresh_token_not_unique.py 2020-05-22 15:09:21.009044320 +0200
280+
+++ oidc_provider/migrations/0021_refresh_token_not_unique.py 2020-05-22 15:09:40.309603363 +0200
281+
@@ -15,7 +15,7 @@
282+
migrations.AlterField(
283+
model_name='token',
284+
name='refresh_token',
285+
- field=models.CharField(default='', max_length=255, unique=True, verbose_name='Refresh Token'),
286+
+ field=models.CharField(default='', max_length=228, unique=True, verbose_name='Refresh Token'),
287+
preserve_default=False,
288+
),
289+
]

patch/fix-oic-logging.patch

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
--- oic/utils/keyio.py.orig 2020-06-06 18:49:44.819104615 +0200
2+
+++ oic/utils/keyio.py 2020-06-06 18:49:47.523182608 +0200
3+
@@ -191,7 +191,7 @@
4+
args["headers"] = {"If-None-Match": self.etag}
5+
6+
try:
7+
- logging.debug("KeyBundle fetch keys from: %s", self.source)
8+
+ logger.debug("KeyBundle fetch keys from: %s", self.source)
9+
r = requests.get(self.source, **args)
10+
except Exception as err:
11+
logger.error(err)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
diff -ur oidc_provider.orig/lib/utils/common.py oidc_provider/lib/utils/common.py
2+
--- oidc_provider.orig/lib/utils/common.py 2020-05-22 15:09:21.009044320 +0200
3+
+++ oidc_provider/lib/utils/common.py 2020-06-04 16:00:12.049562502 +0200
4+
@@ -19,6 +19,7 @@
5+
"""
6+
response = HttpResponse('', status=302)
7+
response['Location'] = uri
8+
+ response.url = uri
9+
return response
10+
11+
12+
--- oidc_provider.orig/lib/utils/oauth2.py 2020-05-22 15:09:21.009044320 +0200
13+
+++ oidc_provider/lib/utils/oauth2.py 2020-06-05 17:05:23.271285858 +0200
14+
@@ -21,10 +21,14 @@
15+
"""
16+
auth_header = request.META.get('HTTP_AUTHORIZATION', '')
17+
18+
- if re.compile('^[Bb]earer\s{1}.+$').match(auth_header):
19+
+ if re.compile(r'^[Bb]earer\s{1}.+$').match(auth_header):
20+
access_token = auth_header.split()[1]
21+
- else:
22+
+ elif request.method == 'GET':
23+
access_token = request.GET.get('access_token', '')
24+
+ elif request.method == 'POST':
25+
+ access_token = request.POST.get('access_token', '')
26+
+ else:
27+
+ access_token = ''
28+
29+
return access_token
30+
31+
@@ -39,7 +43,7 @@
32+
"""
33+
auth_header = request.META.get('HTTP_AUTHORIZATION', '')
34+
35+
- if re.compile('^Basic\s{1}.+$').match(auth_header):
36+
+ if re.compile(r'^Basic\s{1}.+$').match(auth_header):
37+
b64_user_pass = auth_header.split()[1]
38+
try:
39+
user_pass = b64decode(b64_user_pass).decode('utf-8').split(':')

patch/fix-request-profiler-streaming-length.patch

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
--- request_profiler/models.py.old 2020-04-20 13:39:17.844147379 +0200
2-
+++ request_profiler/models.py 2020-04-20 13:39:50.749093653 +0200
1+
--- request_profiler.orig/models.py 2020-06-05 14:33:10.408859604 +0200
2+
+++ request_profiler/models.py 2020-06-05 14:35:09.412282408 +0200
33
@@ -181,7 +181,7 @@
44
"""Extract values from HttpRequest and store locally."""
55
self.request = request
@@ -9,7 +9,20 @@
99
self.query_string = request.META.get("QUERY_STRING", "")
1010
self.http_user_agent = request.META.get("HTTP_USER_AGENT", "")[:400]
1111
# we care about the domain more than the URL itself, so truncating
12-
@@ -206,7 +206,10 @@
12+
@@ -189,11 +189,7 @@
13+
self.http_referer = request.META.get("HTTP_REFERER", "")[:400]
14+
# X-Forwarded-For is used by convention when passing through
15+
# load balancers etc., as the REMOTE_ADDR is rewritten in transit
16+
- self.remote_addr = (
17+
- request.META.get("HTTP_X_FORWARDED_FOR")
18+
- if "HTTP_X_FORWARDED_FOR" in request.META
19+
- else request.META.get("REMOTE_ADDR")
20+
- )
21+
+ self.remote_addr = request.META.get("REMOTE_ADDR")
22+
# these two require middleware, so may not exist
23+
if hasattr(request, "session"):
24+
self.session_key = request.session.session_key or ""
25+
@@ -206,7 +202,10 @@
1326
"""Extract values from HttpResponse and store locally."""
1427
self.response = response
1528
self.response_status_code = response.status_code

0 commit comments

Comments
 (0)