#region Copyright notice and license // Copyright 2015 gRPC authors. // // 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. #endregion using System; using System.Threading; using System.Threading.Tasks; using Google.Apis.Auth.OAuth2; using Grpc.Core; using Grpc.Core.Utils; namespace Grpc.Auth { /// /// Factory/extension methods to create instances of and classes /// based on credential objects originating from Google auth library. /// public static class GoogleGrpcCredentials { /// /// Retrieves an instance of Google's Application Default Credentials using /// GoogleCredential.GetApplicationDefaultAsync() and converts them /// into a gRPC that use the default SSL credentials. /// /// The ChannelCredentials instance. public static async Task GetApplicationDefaultAsync() { var googleCredential = await GoogleCredential.GetApplicationDefaultAsync().ConfigureAwait(false); return googleCredential.ToChannelCredentials(); } /// /// Creates an instance of that will use given access token to authenticate /// with a gRPC service. /// /// OAuth2 access token. /// /// The MetadataCredentials instance. public static CallCredentials FromAccessToken(string accessToken) { return CallCredentials.FromInterceptor(GoogleAuthInterceptors.FromAccessToken(accessToken)); } /// /// Converts a ITokenAccess (e.g. GoogleCredential) object /// into a gRPC object. /// /// The credential to use to obtain access tokens. /// The CallCredentials instance. public static CallCredentials ToCallCredentials(this ITokenAccess credential) { return CallCredentials.FromInterceptor(GoogleAuthInterceptors.FromCredential(credential)); } /// /// Converts a ITokenAccess (e.g. GoogleCredential) object /// into a gRPC object. /// Default SSL credentials are used. /// /// The credential to use to obtain access tokens. /// >The ChannelCredentials instance. public static ChannelCredentials ToChannelCredentials(this ITokenAccess googleCredential) { return ChannelCredentials.Create(new SslCredentials(), googleCredential.ToCallCredentials()); } } }