我目前正在調查WCF實現將通過IIS運行的RESTful服務。 目前我們的軟件提供了對存儲在數據庫中無法使用webHttpBinding獲取在WCF RESTful服務中工作的自定義身份驗證
一個指定的Windows活動目錄,如果認證 成功的地方,查找
我們自己內部的用戶帳戶各種渠道驗證用戶身份的能力做是爲了找到其內部帳戶 WINOWS之一與
- 另一個LDAP服務器如Novell公司
所以我希望這樣工作的方式是客戶端通過SSL發送帶有 身份驗證標頭(現在基本)的http請求,然後該服務將使用自定義 身份驗證來實現上述過程。
就目前而言,我自託管服務,並試圖讓自定義的認證 例如工作,它是否正確啓動了,但我得到的,當我嘗試從瀏覽器 或工具提出請求我在哪裏可以附加身份驗證標頭爲
「錯誤101(net :: ERR_CONNECTION_RESET):連接已重置。」
我已經在自定義認證類中設置了一個斷點,它永遠不會到達,所以我猜測它是 配置的問題。
我的app.config;
<configuration>
...
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="secure">
<security mode="Transport">
<transport clientCredentialType="Basic"></transport>
</security>
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="CELCAT.RegisterMarker.RegisterMarker" behaviorConfiguration="myServiceBehavior">
<endpoint address="https://mymachine:8001/servicename"
binding="webHttpBinding"
bindingConfiguration="secure"
contract="myServiceContract" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="myServiceBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="True"/>
<serviceAuthorization serviceAuthorizationManagerType="MyServiceAuthorizationManager, authenticatonassembly" />
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="servicenamespace, serviceassembly" />
<serviceCertificate findValue="certname"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
我看過一個貼子,說什麼,我試圖做的是不可能的開箱與WCF 並實現這一點,我需要編寫自定義模塊或者按照下面的描述請求攔截器;
通過自定義模塊進行驗證; http://custombasicauth.codeplex.com/
通過請求攔截器進行身份驗證; http://www.codeproject.com/KB/WCF/BasicAuthWCFRest.aspx
這似乎應該是可能的我,所以我的問題是
- 正是我試圖做可能嗎?
- 如果是這樣,我錯了什麼?或者如果不是,哪種解決方法最好?
你能分享一下IIS配置嗎?我假設你已經設置了SSL,並且除了匿名之外,網站上的所有認證方法都被禁用了? – 2012-08-02 13:45:51
我還沒有在IIS中嘗試過這種配置。目前我自己託管服務,所以我可以調試自定義身份驗證類。如果我能得到這個配置工作,我想我將不得不允許匿名身份驗證並堅持SSL? – 2012-08-02 14:50:01
如果您的綁定設置爲強制傳輸安全,並且未配置SSL,則它將拒絕連接。 – 2012-08-02 17:22:56