• hinoka@chromium.org's avatar
    Adds SSO auth to gsutil · c6a2ee69
    hinoka@chromium.org authored
    Code path:
    1. plugins.sso_auth is imported, which adds the AuthHandler class to the global state.
    2. HasConfiguredCredentials() in gslib/utils.py is called by gsutil, and will return true if "prodaccess" exists on the system, which tells the system that we don't want a no-op auth handler.
    3. When a command is called, all the auth handlers are cycled through and sso_auth.SSOAuth is called, which calls a stubby command to emit a gaiamint'ed oauth2 access token, which is then used as the Authorization Header
    
    if --bypass_prodaccess is passed in, then:
    1. HasConfiguredCredentials() will bypass the check for prodaccess, as if it didn't exist.
    2. plugins.sso_auth does not get imported.
    Which will essentially cause gsutil to behave as if this patch never existed.
    
    So the expected behavior is:
    =.boto file does not exist, prodaccess exists, but unauthenticated=
    Failure: No handler was ready to authenticate. 3 handlers were checked. ['OAuth2Auth', 'HmacAuthV1Handler', 'SSOAuth'] Check your credentials.
    
    =.boto file exists, prodaccess exists, but unauthenticated=
    sso_auth will raise NotReadyToAuthenticate, and the .boto file will be used instead
    
    =.boto file exists, prodaccess exists, authenticated=
    sso_auth will be run _after_ the default gsutil authenticator, which causes the sso_auth to be used over whatever the default authentication is.
    
    bypass_prodaccess is passed in by default to upload_to_google_storage because we expect people who use upload_to_google_storage to not need prodaccess and have their own boto file already.  Also the sso_auth plugin will only request a readonlyi token, which will not work for uploading.
    
    BUG=258152
    
    Review URL: https://codereview.chromium.org/86123002
    
    git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@240266 0039d316-1c4b-4281-b951-d872f2087c98
    c6a2ee69
Name
Last commit
Last update
bootstrap Loading commit data...
git-templates Loading commit data...
git_utils Loading commit data...
recipes Loading commit data...
support Loading commit data...
testing_support Loading commit data...
tests Loading commit data...
third_party Loading commit data...
zsh-goodies Loading commit data...
.gitignore Loading commit data...
LICENSE Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README Loading commit data...
README.codereview Loading commit data...
README.gclient Loading commit data...
README.git-cl Loading commit data...
README.testing Loading commit data...
WATCHLISTS Loading commit data...
annotated_gclient.py Loading commit data...
apply_issue Loading commit data...
apply_issue.bat Loading commit data...
apply_issue.py Loading commit data...
breakpad.py Loading commit data...
cbuildbot Loading commit data...
checkout.py Loading commit data...
chrome-update-create-task.bat Loading commit data...
chrome-update.bat Loading commit data...
chrome-update.py Loading commit data...
chrome_set_ver Loading commit data...
codereview.settings Loading commit data...
commit_queue.py Loading commit data...
cpplint.bat Loading commit data...
cpplint.py Loading commit data...
cpplint_chromium.py Loading commit data...
create-chromium-git-src Loading commit data...
create-ntfs-junction.c Loading commit data...
create-ntfs-junction.exe Loading commit data...
cros Loading commit data...
cros_sdk Loading commit data...
crup-runner.sh Loading commit data...
download_from_google_storage Loading commit data...
download_from_google_storage.bat Loading commit data...
download_from_google_storage.py Loading commit data...
drover Loading commit data...
drover.bat Loading commit data...
drover.py Loading commit data...
fetch Loading commit data...
fetch.bat Loading commit data...
fetch.py Loading commit data...
fix_encoding.py Loading commit data...
gcl Loading commit data...
gcl.bat Loading commit data...
gcl.py Loading commit data...
gclient Loading commit data...
gclient-new-workdir.py Loading commit data...
gclient.bat Loading commit data...
gclient.py Loading commit data...
gclient_scm.py Loading commit data...
gclient_utils.py Loading commit data...
gerrit_util.py Loading commit data...
git-cl Loading commit data...
git-cl-upload-hook Loading commit data...
git-crsync Loading commit data...
git-crup Loading commit data...
git-gs Loading commit data...
git-lkgr Loading commit data...
git-number Loading commit data...
git-runhooks Loading commit data...
git-try Loading commit data...
git_cl.py Loading commit data...
git_common.py Loading commit data...
git_number.py Loading commit data...
git_try.py Loading commit data...
gn Loading commit data...
gn.bat Loading commit data...
gn.py Loading commit data...
hammer Loading commit data...
hammer.bat Loading commit data...
my_activity.py Loading commit data...
my_reviews.py Loading commit data...
ninja Loading commit data...
ninja-linux32 Loading commit data...
ninja-linux64 Loading commit data...
ninja-mac Loading commit data...
ninja.exe Loading commit data...
owners.py Loading commit data...
owners_finder.py Loading commit data...
patch.py Loading commit data...
presubmit_canned_checks.py Loading commit data...
presubmit_support.py Loading commit data...
profile.xml Loading commit data...
pylint Loading commit data...
pylint.py Loading commit data...
pylintrc Loading commit data...
repo Loading commit data...
rietveld.py Loading commit data...
scm.py Loading commit data...
subcommand.py Loading commit data...
subprocess2.py Loading commit data...
trychange.py Loading commit data...
update_depot_tools Loading commit data...
update_depot_tools.bat Loading commit data...
upload_to_google_storage.py Loading commit data...
watchlists.py Loading commit data...
weekly Loading commit data...
wtf Loading commit data...