2

質問の要約: ASP.net で資格情報を使用して Web サービスを呼び出す場合、Web サービスを呼び出す Web アプリケーションにログインした元のユーザーをどのように取得できますか?

説明:

Web サービスを呼び出す Web アプリケーションがあります。どちらも ASP.NET で、現在は 2.0 です。

ユーザーは Web アプリケーション (Windows 認証) にログインしますが、Web サービスを呼び出すには、特定の資格情報を使用します。

   proxy.PreAuthenticate = true;
   proxy.Credentials = new System.Net.NetworkCredential(UserName, Password);

WebService.User.Identity呼び出された Web サービスから、Web サービス クラス ( )の ID 属性にアクセスすると、これらの資格情報ではなく、ログインしている元のユーザーが取得されます。

ただし、Web サービスでフェデレーション認証と .NET 4 に切り替えると、WebService.User.Identity が特別な資格情報を取得するようになりました。

要約すると、同じ資格情報で同じ Web メソッドを呼び出すと、WebService.User.Identity は次を返します。

  • .NET 2 + Windows 認証: ログイン ユーザーの元のユーザー名

  • .NET 4 + フェデレーション認証: メソッド呼び出しで使用される資格情報

元のユーザーがフェデレーション認証で .NET 4 にログインするように変更するにはどうすればよいですか?

編集: .NET 2 では、ユーザーに関連するサーバー変数は次のとおりです。

  • AUTH_USER: ログインしているユーザー
  • LOGON_USER: 特別なユーザー資格情報
  • REMOTE_USER: ログインしているユーザー

前述したように、.NET 4 では、3 つのサーバー変数は特別なユーザー資格情報です。

4

1 に答える 1

0

こんにちは、元のログインユーザーを取得するために以下のコードを試してみてください:

        string serverVariable = Request.ServerVariables["AUTH_USER"].ToString();
        string[] authUser = serverVariable.Split('\\');
        string strUserName = authuser[0];
        string strDomain = authUser[1];
于 2013-01-14T09:58:20.510 に答える