windows 身分識別驗證和OData
1.伺服器端
1) 整合身分識別驗證
在使用IIS作為服務宿主的情況下,需要開啟整合身分識別驗證,關閉匿名驗證
windows身分識別驗證要求請求中包含以下的http header: (以下例子是伺服器發生401時給用戶端的錯誤提示)
WWW-Authenticate: NTLM
WWW-Authenticate: Negotiate
其中NTLM意味著你需要使用windows身分識別驗證
Negotiate意味著用戶端可以嘗試Kerberos 身分識別驗證
2)基本驗證
當你把IIS配置為基本驗證的時候
伺服器返回401會如下所示:
WWW-Authenticate: Basic realm="mydomain.com"
這些資訊告訴用戶端,需要提供一個給mydomain.com的身份憑據
基本驗證非常簡單,但是並不安全,除非你使用Https
2.用戶端
1)瀏覽器
大多數在遇到http401的時候會彈出一個登入框給使用者
2).net用戶端應用程式
如果你的程式運行在windows系統下代碼如下所示
MyDataContext ctx = new MyDataContext(uri);
ctx.Credentials = System.Net.CredentialCache.DefaultCredentials;
如果你的程式運行在非windows系統下,請考慮以下代碼
ctx.Credentials = new NetworkCredential( "username", "password", "domain");
Silverlight 4:
ctx.UseDefaultCredentials = true;
參考原文:http://blogs.msdn.com/b/astoriateam/archive/2010/05/10/odata-and-authentication-part-2-windows-authentication.aspx