使用用戶名/密碼組合很好,但不是傳遞查詢字符串,而是以更加標準化的方式(HTTP基本驗證)將其添加到消息的請求標頭中。下面是代碼會是什麼樣子:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"https://localhost:8010/api/Customer/1");
//Add a header to the request that contains our credentials
//DO NOT HARDCODE IN PRODUCTION!! Pull credentials real-time from database or other store.
string svcCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes("user1"+ ":" + "test"));
req.Headers.Add("Authorization", "Basic " + svcCredentials);
您的問題時帶上「WCF」和「網絡API」,因此檢查證書服務器端是一個有點不同。然而,你基本上拉'授權'標題,並檢查憑據,看看用戶是否經過身份驗證和授權。如果它們未通過身份驗證,請返回HTTP 401消息。
對於WCF REST在IIS託管爲基礎的服務,你可以從我的博客中查看完整詳細的例子:
Using Basic Authentication In REST Based Services Hosted in IIS
這很好,但客戶如何輸入他們的憑證才能獲得授權?我需要揭露一種方法嗎? – CallumVass
這取決於您使用的客戶端平臺。例如使用.NET WebClient,您可能會設置WebClient.Credentials屬性。 –