1

SQL トランザクションを実行するために、データベースへのアクセスが許可されている特定の AD アカウントを常に使用する必要がある WCF Web サービスがあります。私はいくつかの記事を読みましたが、私が望むように動作させていないため、明らかに何か間違ったことを行っている/理解しています。

その Web サービスは AD ユーザーを偽装する必要があると考えたので、Web サービスの web.config で偽装を有効にしました。

<identity userName="dmn\wsusr" password="p@55w0rd" impersonate="true"/>

次に、技術的には Windows ユーザーを使用して SQL に接続しているので、接続文字列を次のように設定します ( Integrated security=true;Windows 認証の場合は " " ですよね?)。

Data Source=SQLSVR\INSTNC; Failover Partner=SQLSVR\INSTNC2; Initial Catalog=DB; Integrated Security=true;

接続をテストするために、いくつかの値をテーブルに挿入します。挿入するテーブルの列の 1 つに、次の定義があります。

[LogUser] VARCHAR(75) NOT NULL DEFAULT USER

したがって、理論的には、接続を開いたユーザーの AD ユーザー名が自動的に列に挿入されます。残念ながら、この列には毎回自分の AD ユーザー名が含まれています。

Windows 認証を使用する Web サイト経由で Web サービスをテストしているので、これが問題の原因に関与していると推測しています。ただし、これは外部からアクセス可能な Web サービスであり、SQL トランザクションはクライアントと Web サービス間の認証に依存するべきではないため、Web サイト認証は無視する必要があります。

ありがとう!

編集

私も試しました:

  • 接続文字列に追加Trusted_connectionしましたが、上記と同じ結果が得られました。
  • User ID接続文字列でandを使用しPasswordましたが、接続文字列は SQL ユーザーのみを受け入れるため、Login failureエラーが発生しました

EDIT2

私は上司に、サービス用に別のアプリケーション プールを作成し、それを AD ユーザーとして実行するように設定し、AD ユーザーがサービスとしてログオンできるようにするアプローチを試すよう提案しました (どこかで読んだものです)。彼らはそれに熱心ではなく、それは「最後の手段」であるべきだと考えています

4

0 に答える 0