2009-07-23 22 views
0

私はクライアント/サーバープロジェクトを持ち、WCFと通信しています(名前付きパイプは変更できますが、IISは使用できません)。このプロジェクトはActive Directoryと統合されています。Windows認証、カスタムアクセス許可、WCF、Active Directory

このプログラムは、通常、権限を持たないアクセス許可をユーザーに与えるためのもので、一種のプロキシとして機能します。ユーザーは、クライアントを使用して、実行するタスクを「要求」します。特定の基準が満たされている限り、サーバーはクライアントのタスクを実行します。

これらの基準の1つは、ユーザーがこのタスクを要求できることです。 WCFサービスがユーザーのIDを保証し、データベースと比較し、タスクを実行するか、タスクを拒否する方法が必要です。

Windows認証を使用して、ユーザーが100%保証する方法を教えてください。名前付きパイプを事前に

おかげで、

答えて

0

only allowed type of authentication

マイクはWindows認証(netNamedPipeBindingまでスクロール)です。あなたはアイデンティティを持ってたら、Windowsが正常にこのユーザを認証しているとあなたがあなたのDBに持っているものに対して、その身元を確認することができることを知っている...例えば

[OperationBehavior(Impersonation = ImpersonationOption.Required)] 
public string GetData(int value) 
{ 
    return string.Format("Hi, {0}, you have entered: {1}", 
          WindowsIdentity.GetCurrent().Name, value); 
} 

impersonation declareativelyを行うことができます。

+0

偽装コードは必須ですか? 実際には、要求されたものとは全く異なるユーザーとしてタスクを実行する必要があります。続行する前に、自分の資格情報を自分のデータベースと照らし合わせて確認する必要があります。これはそうするだろうか? –

+0

発信者の身元を知るには、偽装が必要です。偽装せずに現在のWindows IDを取得すると、サービスが実行されているアカウントのIDが取得されます。チェックするだけで名前を取得し、メソッドから名前を返すだけです。呼び出し元を偽装する方法で作業を行う必要はありません(実際には、実行したくないことです)。 –

関連する問題