public override Task <CertificateInfoResponse> GetCertificateInfo(Empty request, ServerCallContext context) { var httpContext = context.GetHttpContext(); var clientCertificate = httpContext.Connection.ClientCertificate; Console.WriteLine(clientCertificate); var name = string.Join(',', context.AuthContext.PeerIdentity.Select(i => i.Value)); var certificateInfo = new CertificateInfoResponse { HasCertificate = context.AuthContext.IsPeerAuthenticated, Name = name }; return(Task.FromResult(certificateInfo)); }
public override Task <CertificateInfoResponse> GetCertificateInfo(Empty request, ServerCallContext context) { // ClientCertificateMode in Kestrel must be configured to allow client certificates // https://docs.microsoft.com/dotnet/api/microsoft.aspnetcore.server.kestrel.https.httpsconnectionadapteroptions.clientcertificatemode // Use the following code to get the client certificate as an X509Certificate2 instance: // // var httpContext = context.GetHttpContext(); // var clientCertificate = httpContext.Connection.ClientCertificate; var name = string.Join(',', context.AuthContext.PeerIdentity.Select(i => i.Name)); var certificateInfo = new CertificateInfoResponse { HasCertificate = context.AuthContext.IsPeerAuthenticated, Name = name }; return(Task.FromResult(certificateInfo)); }