aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/python/grpcio/grpc/_auth.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/python/grpcio/grpc/_auth.py')
-rw-r--r--src/python/grpcio/grpc/_auth.py83
1 files changed, 42 insertions, 41 deletions
diff --git a/src/python/grpcio/grpc/_auth.py b/src/python/grpcio/grpc/_auth.py
index dea3221c9d..e8a90cf504 100644
--- a/src/python/grpcio/grpc/_auth.py
+++ b/src/python/grpcio/grpc/_auth.py
@@ -26,7 +26,6 @@
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
"""GRPCAuthMetadataPlugins for standard authentication."""
import inspect
@@ -36,51 +35,53 @@ import grpc
def _sign_request(callback, token, error):
- metadata = (('authorization', 'Bearer {}'.format(token)),)
- callback(metadata, error)
+ metadata = (('authorization', 'Bearer {}'.format(token)),)
+ callback(metadata, error)
class GoogleCallCredentials(grpc.AuthMetadataPlugin):
- """Metadata wrapper for GoogleCredentials from the oauth2client library."""
-
- def __init__(self, credentials):
- self._credentials = credentials
- self._pool = futures.ThreadPoolExecutor(max_workers=1)
-
- # Hack to determine if these are JWT creds and we need to pass
- # additional_claims when getting a token
- if 'additional_claims' in inspect.getargspec(
- credentials.get_access_token).args:
- self._is_jwt = True
- else:
- self._is_jwt = False
-
- def __call__(self, context, callback):
- # MetadataPlugins cannot block (see grpc.beta.interfaces.py)
- if self._is_jwt:
- future = self._pool.submit(self._credentials.get_access_token,
- additional_claims={'aud': context.service_url})
- else:
- future = self._pool.submit(self._credentials.get_access_token)
- future.add_done_callback(lambda x: self._get_token_callback(callback, x))
-
- def _get_token_callback(self, callback, future):
- try:
- access_token = future.result().access_token
- except Exception as e:
- _sign_request(callback, None, e)
- else:
- _sign_request(callback, access_token, None)
-
- def __del__(self):
- self._pool.shutdown(wait=False)
+ """Metadata wrapper for GoogleCredentials from the oauth2client library."""
+
+ def __init__(self, credentials):
+ self._credentials = credentials
+ self._pool = futures.ThreadPoolExecutor(max_workers=1)
+
+ # Hack to determine if these are JWT creds and we need to pass
+ # additional_claims when getting a token
+ if 'additional_claims' in inspect.getargspec(
+ credentials.get_access_token).args:
+ self._is_jwt = True
+ else:
+ self._is_jwt = False
+
+ def __call__(self, context, callback):
+ # MetadataPlugins cannot block (see grpc.beta.interfaces.py)
+ if self._is_jwt:
+ future = self._pool.submit(
+ self._credentials.get_access_token,
+ additional_claims={'aud': context.service_url})
+ else:
+ future = self._pool.submit(self._credentials.get_access_token)
+ future.add_done_callback(
+ lambda x: self._get_token_callback(callback, x))
+
+ def _get_token_callback(self, callback, future):
+ try:
+ access_token = future.result().access_token
+ except Exception as e:
+ _sign_request(callback, None, e)
+ else:
+ _sign_request(callback, access_token, None)
+
+ def __del__(self):
+ self._pool.shutdown(wait=False)
class AccessTokenCallCredentials(grpc.AuthMetadataPlugin):
- """Metadata wrapper for raw access token credentials."""
+ """Metadata wrapper for raw access token credentials."""
- def __init__(self, access_token):
- self._access_token = access_token
+ def __init__(self, access_token):
+ self._access_token = access_token
- def __call__(self, context, callback):
- _sign_request(callback, self._access_token, None)
+ def __call__(self, context, callback):
+ _sign_request(callback, self._access_token, None)