internal async Task <string> GetTokenEndpointAsync(GraphQLDataAdapterMetadata adapterMetadata) { var discoveryResponse = await DiscoveryClient.GetAsync(adapterMetadata.Credentials.Issuer); if (discoveryResponse.IsError) { throw new Exception("Auth discovery failure."); } return(discoveryResponse.TokenEndpoint); }
internal async Task <string> GetAuthenticationTokenAsync(GraphQLDataAdapterMetadata adapterMetadata) { var tokenEndpoint = await GetTokenEndpointAsync(adapterMetadata); var client = adapterMetadata.Credentials.ClientId; var secret = adapterMetadata.Credentials.ClientSecret; var scope = adapterMetadata.Credentials.Scopes; var tokenClient = new TokenClient(tokenEndpoint, client, secret); var tokenResponse = await tokenClient.RequestClientCredentialsAsync(scope); if (tokenResponse.IsError) { // TODO: Log this... and throw exception... return(null); } return(tokenResponse.AccessToken); }