質問の要約: 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 つのサーバー変数は特別なユーザー資格情報です。