2011-08-11 20 views
0

こんにちは、仲間StackOverflowとプログラミング愛好家。私は質問がある、私はテストサーバーにユーザーをテストすることができますように私はMVCのWebサイトをテストサーバーに移動しようとしている...私は私がサイトを開発したときに見落とした小さな問題に遭遇した。私のウェブサイトは、私が取ることを書いたサービスを呼び出し、私は私のローカルマシン上で開発し、私たとき、これはちょうど完全に働いたWindows認証WCFとASP.Net MVC2:wcf Webサービスへのユーザー情報の取得

private string CallerNameOnly = string.Empty; 
    private string CallerFullDomain = string.Empty; 

    public ACOService() 
    { 
     this.CallerFullDomain = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name.ToString(); 
     this.CallerNameOnly = this.CallerFullDomain.Substring(this.CallerFullDomain.IndexOf('\\') + 1); 
    } 

...サービスの呼び出し元のADのユーザー名を取り、いくつかのバックエンドの作業を行うためにそれを使用していますユーザー名がサービスに渡されました...しかし、使用しているサーバーに展開すると、同じ機能を複製するのが苦労しています...何らかの理由で、現在のユーザーが自分のマシン名になってしまいます。 .. IIS 7の設定に問題を分けているように見えましたが、変更されたときに私のウェブサイトの動作が多少変更されました...アプリケーションプールの詳細設定に行き、プロセスモデル/ LocalSystemから、他のアイデンティティのいずれかにユーザーが誰であるかを変更します。私のリモートデバッガあなたが私のことを知っているので、ユーザー名は何かを理解できませんでしたが、あなたはそのアイデアを得ましたか?
私のウェブサイト(Windows認証を使用)を使用している人のユーザー名を取得して、自分のサイトにアクセスするために使用したユーザー名でWebサービスを呼び出すにはどうすればよいですか?私は

public ACOService(string userID) 
    { 
     this.CallerNameOnly = userID;  
    } 

...ユーザー名を取得し、すなわち、コンストラクタに直接渡すについて考えたが、私はすでにそれに文字列を持つコンストラクタを持っているので、それは、問題を提起します。コンストラクタを契約に入れる必要があると思います。とにかくそれはWCFでどのように機能しますか? この問題のお手伝いをさせていただきます。

+0

IIS設定で匿名アクセスを無効にしましたか?匿名アクセスを許可せず、IISのWebサイトに対してのみWindows認証を使用するとどうなりますか? – RoelF

+0

匿名アクセスが拒否されました。 – SoftwareSavant

+0

また、WCFサービスにはどのようなバインディングを使用していますか?あなたはそれらのための認証を設定しましたか? – RoelF

答えて

1

サービスでクライアントを偽装する必要があります。

http://msdn.microsoft.com/en-us/library/ms731090.aspx

+0

私はサービス上でクライアントを偽装しました。私のユーザーが私のWebサービスで使用されていないことを示すエラーが表示されています。 Impersonateでは、クライアントをセットアップするときに偽装コードを呼び出し、サービス契約の実装でその偽装を設定する属性を持っています。 [OperationBehavior(Impersonation = ImpersonationOption.Required)] client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation; まだ何も動作していません...--(ヘルプ!!!! – SoftwareSavant

+0

クライアントを呼び出すたびにSystem.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principle.TokenImpersonationLevel.Impersonationを呼び出す必要がありますか?時間? – SoftwareSavant