| Index: third_party/gcs-oauth2-boto-plugin/gcs_oauth2_boto_plugin/oauth2_plugin.py
|
| ===================================================================
|
| --- third_party/gcs-oauth2-boto-plugin/gcs_oauth2_boto_plugin/oauth2_plugin.py (revision 0)
|
| +++ third_party/gcs-oauth2-boto-plugin/gcs_oauth2_boto_plugin/oauth2_plugin.py (revision 0)
|
| @@ -0,0 +1,71 @@
|
| +# Copyright 2014 Google Inc. All Rights Reserved.
|
| +#
|
| +# Licensed under the Apache License, Version 2.0 (the "License");
|
| +# you may not use this file except in compliance with the License.
|
| +# You may obtain a copy of the License at
|
| +#
|
| +# http://www.apache.org/licenses/LICENSE-2.0
|
| +#
|
| +# Unless required by applicable law or agreed to in writing, software
|
| +# distributed under the License is distributed on an "AS IS" BASIS,
|
| +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| +# See the License for the specific language governing permissions and
|
| +# limitations under the License.
|
| +
|
| +"""Boto auth plugin for OAuth2.0 for Google Cloud Storage."""
|
| +
|
| +from __future__ import absolute_import
|
| +
|
| +from boto.auth_handler import AuthHandler
|
| +from boto.auth_handler import NotReadyToAuthenticate
|
| +
|
| +from gcs_oauth2_boto_plugin import oauth2_client
|
| +from gcs_oauth2_boto_plugin import oauth2_helper
|
| +
|
| +IS_SERVICE_ACCOUNT = False
|
| +
|
| +
|
| +class OAuth2Auth(AuthHandler):
|
| +
|
| + capability = ['google-oauth2', 's3']
|
| +
|
| + def __init__(self, path, config, provider):
|
| + self.oauth2_client = None
|
| + if (provider.name == 'google'):
|
| + if config.has_option('Credentials', 'gs_oauth2_refresh_token'):
|
| + self.oauth2_client = oauth2_helper.OAuth2ClientFromBotoConfig(config)
|
| + elif config.has_option('GoogleCompute', 'service_account'):
|
| + self.oauth2_client = oauth2_client.CreateOAuth2GCEClient()
|
| + if not self.oauth2_client:
|
| + raise NotReadyToAuthenticate()
|
| +
|
| + def add_auth(self, http_request):
|
| + http_request.headers['Authorization'] = \
|
| + self.oauth2_client.GetAuthorizationHeader()
|
| +
|
| +
|
| +class OAuth2ServiceAccountAuth(AuthHandler):
|
| +
|
| + capability = ['google-oauth2', 's3']
|
| +
|
| + def __init__(self, path, config, provider):
|
| + if (provider.name == 'google'
|
| + and config.has_option('Credentials', 'gs_service_client_id')
|
| + and config.has_option('Credentials', 'gs_service_key_file')):
|
| + self.oauth2_client = oauth2_helper.OAuth2ClientFromBotoConfig(config,
|
| + cred_type=oauth2_client.CredTypes.OAUTH2_SERVICE_ACCOUNT)
|
| +
|
| + # If we make it to this point, then we will later attempt to authenticate
|
| + # as a service account based on how the boto auth plugins work. This is
|
| + # global so that command.py can access this value once it's set.
|
| + # TODO: replace this approach with a way to get the current plugin
|
| + # from boto so that we don't have to have global variables.
|
| + global IS_SERVICE_ACCOUNT
|
| + IS_SERVICE_ACCOUNT = True
|
| + else:
|
| + raise NotReadyToAuthenticate()
|
| +
|
| + def add_auth(self, http_request):
|
| + http_request.headers['Authorization'] = \
|
| + self.oauth2_client.GetAuthorizationHeader()
|
| +
|
|
|
| Property changes on: third_party/gcs-oauth2-boto-plugin/gcs_oauth2_boto_plugin/oauth2_plugin.py
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|