public async Task <GrantedToken> GetTokenByClientCredentialsGrantType( ClientCredentialsGrantTypeParameter clientCredentialsGrantTypeParameter, AuthenticationHeaderValue authenticationHeaderValue, X509Certificate2 certificate, string issuerName) { if (clientCredentialsGrantTypeParameter == null) { throw new ArgumentNullException(nameof(clientCredentialsGrantTypeParameter)); } var processId = Guid.NewGuid().ToString(); try { _eventPublisher.Publish(new GrantTokenViaClientCredentialsReceived(Guid.NewGuid().ToString(), processId, _payloadSerializer.GetPayload(clientCredentialsGrantTypeParameter, authenticationHeaderValue), authenticationHeaderValue, 0)); _oauthEventSource.StartGetTokenByClientCredentials(clientCredentialsGrantTypeParameter.Scope); _clientCredentialsGrantTypeParameterValidator.Validate(clientCredentialsGrantTypeParameter); var result = await _getTokenByClientCredentialsGrantTypeAction.Execute(clientCredentialsGrantTypeParameter, authenticationHeaderValue, certificate, issuerName); _oauthEventSource.EndGetTokenByClientCredentials( result.ClientId, clientCredentialsGrantTypeParameter.Scope); _eventPublisher.Publish(new TokenGranted(Guid.NewGuid().ToString(), processId, _payloadSerializer.GetPayload(result), 1)); return(result); } catch (IdentityServerException ex) { _eventPublisher.Publish(new OAuthErrorReceived(Guid.NewGuid().ToString(), processId, ex.Code, ex.Message, 1)); throw; } }