Add Authorization header with token to user info call
While not required, it is recommended to send the token as an Authorization header to the UserInfo call in OIDC: http://openid.net/specs/openid-connect-core-1_0.html#UserInfo Some implementations expect this and will fail if not present
This commit is contained in:
parent
a9337ff484
commit
c0cc574ca2
2 changed files with 9 additions and 2 deletions
|
@ -101,7 +101,11 @@ class OAuthService(object):
|
||||||
'alt': 'json',
|
'alt': 'json',
|
||||||
}
|
}
|
||||||
|
|
||||||
got_user = http_client.get(self.user_endpoint(), params=token_param)
|
headers = {
|
||||||
|
'Authorization': 'Bearer %s' % token,
|
||||||
|
}
|
||||||
|
|
||||||
|
got_user = http_client.get(self.user_endpoint(), params=token_param, headers=headers)
|
||||||
if got_user.status_code // 100 != 2:
|
if got_user.status_code // 100 != 2:
|
||||||
raise OAuthGetUserInfoException('Non-2XX response code for user_info call: %s' %
|
raise OAuthGetUserInfoException('Non-2XX response code for user_info call: %s' %
|
||||||
got_user.status_code)
|
got_user.status_code)
|
||||||
|
|
|
@ -153,7 +153,10 @@ def preferred_username(request):
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def userinfo_handler(oidc_service, preferred_username):
|
def userinfo_handler(oidc_service, preferred_username):
|
||||||
@urlmatch(netloc=r'fakeoidc', path=r'/userinfo')
|
@urlmatch(netloc=r'fakeoidc', path=r'/userinfo')
|
||||||
def handler(_, __):
|
def handler(_, req):
|
||||||
|
if req.headers.get('Authorization') != 'Bearer sometoken':
|
||||||
|
return {'status_code': 401, 'content': 'Missing expected header'}
|
||||||
|
|
||||||
content = {
|
content = {
|
||||||
'sub': 'cooluser',
|
'sub': 'cooluser',
|
||||||
'preferred_username':preferred_username,
|
'preferred_username':preferred_username,
|
||||||
|
|
Reference in a new issue