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 ユーザーがサービスとしてログオンできるようにするアプローチを試すよう提案しました (どこかで読んだものです)。彼らはそれに熱心ではなく、それは「最後の手段」であるべきだと考えています