どのようにWCF Data Servicesのための無効認証スキームへ
-
23-09-2019 - |
質問
私は(認証スキームがアクティブであるかに応じて、または類似の)次のエラーを取得するために始めました
は指定された認証方式をIIS 「基本、匿名」、しかし結合 だけ正確に仕様をサポートしています 1つの認証方式。妥当 認証方式は、ダイジェストです 、NTLM、基本、または匿名をネゴシエート。 その唯一のAように、設定を変更するIIS 単一の認証方式が使用されます。
どうやらWCFデータサービス(一般的にはWCFは?)より積極的な認証方式度も持っ処理することはできません。
[OK]を、私はサポート要求!!
を経由して....私はIISのコントロールパネル経由でWebアプリケーション上のすべてが、-1認証方式を無効にすることができますことを承知していますので、をweb.configファイルで、サービスごとのレベルで、単一の認証方式を指定する方法はありますか?の
私はそれがの のWCF Data Servicesのがウェブ設定のの中で自分自身を設定していないことが判明...これはまっすぐ進む<system.serviceModel>
に変更を加えるなどとしてかもしれないと思ったが、 。あなたはDataService<>
クラスを見れば、それはあなたが、私はXMLを経由してその設定を変更するために必要とされるであろうと推測[ServiceContract]
...でそれを参照することができませんので、<service><endpoint>
を実装していません。
P.S。私たちのホストはII6を使用していますが、IIS6&IIS7のための両方のソリューションが高く評価した。
解決
まずWeb構成ファイルにデータサービスを形作ることが可能です。 DataServiceのが使用する契約がSystem.Data.Services.IRequestHandlerと呼ばれます。
ここであなたがそれを形作るためにWeb設定ファイルに何ができるかです。
system.servicemodel要素のサービスタグにを追加します
<service name="{you service type name including the namespace i.e. myapplication.myservice}">
<endpoint address="" binding="webHttpBinding" contract="System.Data.Services.IRequestHandler">
</endpoint>
</service>
あなたは、標準のWCF構成要素を使用したもののすべてのマナーを設定するが開始できることをしたらます。
第二に有効にするために、またはあなたが次のことを行うことができますIIS内の特定のサービスの無効認証方法:
IIS用スナップオン右側サービス・ファイル(すなわちyourservice.svc)をクリックし、[プロパティ]をクリックします。 プロパティでいったん[セキュリティ]タブをファイルし、認証とアクセス制御グループボックスの[編集]ボタンを選択しに行きます。その後それだけでIISのディレクトリセキュリティを設定するようなものです。
任意のトラブルシューティングあたりとして最後の提案として、は、WCFごとに豊かで非常に有益であるように、データサービスのログは、WCFで書かれている、XML設定を使用して、それを形作るながら、WCF disgnosticsを有効にすることが重要である行きます。
あなたは WCF管理および診断の上でそれについての詳細を知ることができます
私は私はあなたの問題のお手伝いをすることができました願っています。
私は物事が行く方法を知ってみましょう。
よろしく
ダニエル・Portella
UPDATE:
こんにちはシュナイダー
以下のXMLの読み取りに認証方式を指定するには、
例として、Windows認証の場合
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="MyBindingName" >
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="{you service type name including the namespace i.e. myapplication.myservice}">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="MyBindingName" contract="System.Data.Services.IRequestHandler">
</endpoint>
</service>
</services>
</system.serviceModel>
</configuration>
認証の他のタイプの例については、MSDNライブラリを確認してください。