私は現在、IISを介して実行されるRESTfulサービスを実装するためのWCFを調査しています。現在、当社のソフトウェアは、さまざまなソースに対してユーザーを認証する機能を提供しています
データベースに保存されている独自の内部ユーザーアカウント
指定されたWindowsActiveDirectory。認証が成功すると、ルックアップが実行されて、winowsがリンクされている内部アカウントが検索されます。
- Novellなどの別のLDAPサーバー
したがって、これを機能させたいのは、クライアントがSSLを介して認証ヘッダー(今のところ基本)を使用してhttp(s)リクエストを送信し、サービスがカスタム認証を使用して上記のプロセスを実装することです。
今のところ、サービスをセルフホスティングしてカスタム認証の例を機能させようとすると、正常に起動しますが、ブラウザまたは認証ヘッダーを添付できるツールからリクエストを送信しようとすると、すべてが取得されます。
「エラー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
これは私には可能であるように思われるので、私の質問は
- 私がやろうとしていることは可能ですか?
- もしそうなら、私は何が間違っていますか?または、そうでない場合は、どちらの回避策が最適ですか?