C#在服務端驗證客戶端證書(Certificate)


使用https協議進行通訊的時候可以設置雙向證書認證,客戶端驗證服務端證書的方法前面已經介紹過了,現在說一下在服務端驗證客戶端證書的方案。

 

這里給出的方案比較簡單,只需要在Service端的配置文件中配置好Client端的證書的Thumbprint(一個或者多個),姑且稱之為證書白名單。當有Client端的Http請求的時候,

只需要使用HttpRequestMessage的擴展方法GetClientCertificate()方法獲取該請求所攜帶的證書,並驗證該證書的Thumbprint是否包含在配置文件的白名單中,如果不包含在白名單中,

在攔截該請求,並報401(未授權)錯誤即可;否則,繼續執行該請求。

 

注意:

GetClientCertificate()方法是HttpRequestmessage對象的擴展方法,該方法定義在System.Net.Http命名空間下的HttpRequestMessageExtensions類中。該方法返回的是一個X509Certificate對象。

 

客戶端攜帶證書發出請求:

           
          var clientCertificate = ...;//獲取本地證書對象
          using (WebRequestHandler handler = new WebRequestHandler())
                {
                    handler.ClientCertificates.Add(clientCertificate);
                    using (HttpClient httpClient = new HttpClient(handler))
                    {
                        var request = new HttpRequestMessage(method: httpMethod, requestUri: requestUri);
                  
                        if (requestContent != null)
                        {
                            request.Content = requestContent;
                        }

                        return await httpClient.SendAsync(request);
                    }
          }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM