2

SQLデータベースにアクセスするために使用したいWCFサービスがありますが(現時点ではLinq2SQLを介して)、ライブIIS環境の信頼できるセキュリティが正しい資格情報を使用していないようです-関連する投稿をフォローしようとしましたここでは、しかしそれを完全に理解することはできないようです。誰かが私の間違いを見つけてくれたら本当にありがたいです...

エンドポイント構成で、BasicHttpBindingを使用するように設定しました。次の構成で

<basicHttpBinding>
  <binding name="authHttpBinding">
    <security mode="TransportCredentialOnly">
      <transport clientCredentialType="Windows"/>
    </security>
  </binding>
</basicHttpBinding>

system.webの設定を次のように設定しました。

<authentication mode="Windows" />
<identity impersonate="true" />

IISサーバーで、新しいAppPoolを追加し、IdentityをApplicationPoolIdentityに設定し、ManagedPipeLineをIntegratedに設定しました。実際のWebアプリケーションで、新しいAppPoolに設定し、Windows認証を「有効」に設定し、有効と無効の両方でASP.Net偽装を試しました

WCFサービスを呼び出そうとすると実行されますが、Linq2SQLを介してストアドプロシージャを実際に呼び出すと(Trusted Securityを使用してリモートサーバー上のデータベースを呼び出す)、次のエラーが発生します。ユーザーのドメインのログインに失敗しました\ machinename $'-末尾にドル記号が付いたマシン名

これは、正しいIDを委任できなかったように見えます(ManagementStudioを介して実際のデータベースに正常にアクセスできます。

4

2 に答える 2

0

データベースへのアクセスは、WCF セキュリティ設定とは関係ありません。バインディング構成からセキュリティ設定を削除し、system.web の偽装設定も削除します。これらのいずれも必要ないはずです。

構成で接続文字列の設定を確認し、Windows 統合セキュリティを使用してデータベースにアクセスしている場合は、データベースに対する正しい権限があることを確認してください。IIS は、apppool で構成された ID を使用してデータベースへの接続を試みるため、アカウントにアクセス権があることを確認する必要があります。指定ユーザーがいる場合は、資格証明が正しく設定されていることを確認してください。ConnectionStrings.com には、これを正しく設定する方法のさまざまな例があります。

HTH。

スティーブ

于 2010-08-10T07:04:09.203 に答える
0

はい、可能です。この場合、セキュリティ設定が Windows (デフォルト) に設定されていることを確認し、サービスが偽装用に準備されていることを確認する必要があります。これは、プログラムまたは宣言によって行うことができます。

適切な ImpersonationOption 属性を必須または許可のいずれかに設定して、必要なサービス/メソッドの偽装を許可するように WCF に指示する必要があります。

[OperationBehavior(Impersonation=ImpersonationOption.Allowed)]

ネットワーク経由でリソースにアクセスしているため、アクセスしているリソースがローカルでない限り、偽装レベルが偽装ではなく委任に設定されていることを確認する必要があります。これは、クライアント エンドポイントの動作レベルで設定されます。

 <clientCredentials>
        <windows allowedImpersonationLevel="[Impersonation or Delegate]"/>
 </clientCredentials>
于 2010-08-11T07:57:49.663 に答える