Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: appengine/swarming/swarming_bot/bot_code/bot_auth.py

Issue 2963103002: Always treat TokenError as fatal error. (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | client/tests/auth_server_test.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2016 The LUCI Authors. All rights reserved. 1 # Copyright 2016 The LUCI Authors. All rights reserved.
2 # Use of this source code is governed under the Apache License, Version 2.0 2 # Use of this source code is governed under the Apache License, Version 2.0
3 # that can be found in the LICENSE file. 3 # that can be found in the LICENSE file.
4 4
5 import collections 5 import collections
6 import logging 6 import logging
7 import threading 7 import threading
8 import time 8 import time
9 9
10 from utils import auth_server 10 from utils import auth_server
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 account_id, service_account, tok.expiry - time.time()) 322 account_id, service_account, tok.expiry - time.time())
323 return tok 323 return tok
324 324
325 def _grab_bot_oauth_token(self, auth_params): 325 def _grab_bot_oauth_token(self, auth_params):
326 # Piggyback on the bot own credentials. This works only for bots that use 326 # Piggyback on the bot own credentials. This works only for bots that use
327 # OAuth for authentication (e.g. GCE bots). Also it totally ignores scopes. 327 # OAuth for authentication (e.g. GCE bots). Also it totally ignores scopes.
328 # It relies on bot_main to keep the bot OAuth token sufficiently fresh. 328 # It relies on bot_main to keep the bot OAuth token sufficiently fresh.
329 # See remote_client.AUTH_HEADERS_EXPIRATION_SEC. 329 # See remote_client.AUTH_HEADERS_EXPIRATION_SEC.
330 bot_auth_hdr = auth_params.swarming_http_headers.get('Authorization') or '' 330 bot_auth_hdr = auth_params.swarming_http_headers.get('Authorization') or ''
331 if not bot_auth_hdr.startswith('Bearer '): 331 if not bot_auth_hdr.startswith('Bearer '):
332 raise auth_server.TokenError(2, 'The bot is not using OAuth', fatal=True) 332 raise auth_server.TokenError(2, 'The bot is not using OAuth')
333 tok = bot_auth_hdr[len('Bearer '):] 333 tok = bot_auth_hdr[len('Bearer '):]
334 334
335 # Default to some safe small expiration in case bot_main doesn't report it 335 # Default to some safe small expiration in case bot_main doesn't report it
336 # to us. This may happen if get_authentication_header bot hook is not 336 # to us. This may happen if get_authentication_header bot hook is not
337 # reporting expiration time. 337 # reporting expiration time.
338 exp = auth_params.swarming_http_headers_exp or (time.time() + 4*60) 338 exp = auth_params.swarming_http_headers_exp or (time.time() + 4*60)
339 339
340 # TODO(vadimsh): For GCE bots specifically we can pass a list of OAuth 340 # TODO(vadimsh): For GCE bots specifically we can pass a list of OAuth
341 # scopes granted to the GCE token and verify it contains all the requested 341 # scopes granted to the GCE token and verify it contains all the requested
342 # scopes. 342 # scopes.
343 return auth_server.AccessToken(tok, exp) 343 return auth_server.AccessToken(tok, exp)
344 344
345 def _grab_oauth_token_via_rpc(self, _rpc_client, _account_id, _scopes): 345 def _grab_oauth_token_via_rpc(self, _rpc_client, _account_id, _scopes):
346 # TODO(vadimsh): Send a request to /swarming/api/v1/bot/oauth_token using 346 # TODO(vadimsh): Send a request to /swarming/api/v1/bot/oauth_token using
347 # given RPC client. 347 # given RPC client.
348 raise auth_server.TokenError(3, 'Not implemented yet') 348 raise auth_server.TokenError(3, 'Not implemented yet')
OLDNEW
« no previous file with comments | « no previous file | client/tests/auth_server_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698