Skip to content

Commit 628f9e6

Browse files
committed
fixed client credential flow which now returns an access token not bound to an user. ref issue #38
1 parent 113c731 commit 628f9e6

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

oauth2_provider/oauth2_validators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ def save_bearer_token(self, token, request, *args, **kwargs):
293293

294294
expires = timezone.now() + timedelta(seconds=oauth2_settings.ACCESS_TOKEN_EXPIRE_SECONDS)
295295
if request.grant_type == 'client_credentials':
296-
request.user = request.client.user
296+
request.user = None
297297

298298
access_token = AccessToken(
299299
user=request.user,

oauth2_provider/tests/test_client_credential.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
from oauthlib.oauth2 import BackendApplicationServer
1515

16-
from ..models import get_application_model
16+
from ..models import get_application_model, AccessToken
1717
from ..oauth2_validators import OAuth2Validator
1818
from ..settings import oauth2_settings
1919
from ..views import ProtectedResourceView
@@ -93,6 +93,17 @@ def test_client_credential_does_not_issue_refresh_token(self):
9393
content = json.loads(response.content.decode("utf-8"))
9494
self.assertNotIn("refresh_token", content)
9595

96+
def test_client_credential_user_is_none_on_access_token(self):
97+
token_request_data = {'grant_type': 'client_credentials'}
98+
auth_headers = self.get_basic_auth_header(self.application.client_id, self.application.client_secret)
99+
100+
response = self.client.post(reverse('oauth2_provider:token'), data=token_request_data, **auth_headers)
101+
self.assertEqual(response.status_code, 200)
102+
103+
content = json.loads(response.content.decode("utf-8"))
104+
access_token = AccessToken.objects.get(token=content["access_token"])
105+
self.assertIsNone(access_token.user)
106+
96107

97108
class TestExtendedRequest(BaseTest):
98109
@classmethod
@@ -130,7 +141,7 @@ def get_scopes(self):
130141

131142
valid, r = test_view.verify_request(request)
132143
self.assertTrue(valid)
133-
self.assertEqual(r.user, self.dev_user)
144+
self.assertIsNone(r.user)
134145
self.assertEqual(r.client, self.application)
135146
self.assertEqual(r.scopes, ['read', 'write'])
136147

0 commit comments

Comments
 (0)