c# - 从 Web 应用程序中检索原始用户身份

标签 c# web-services credentials

问题总结:在 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 服务中切换到联合身份验证和 .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 个服务器变量是特殊的用户凭据。

最佳答案

你好,你能试试下面的代码来获取原始登录用户吗:

        string serverVariable = Request.ServerVariables["AUTH_USER"].ToString();
        string[] authUser = serverVariable.Split('\\');
        string strUserName = authuser[0];
        string strDomain = authUser[1];

关于c# - 从 Web 应用程序中检索原始用户身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14316121/

相关文章:

C# System.Security.Cryptography - 为什么指定 key 和 IV 两次?

java - Maven Web 服务 WSDL 生成不起作用

docker - 谷歌容器注册表: Permission issue while trying to pull/push images with authenticated credentials

c# - 正则表达式:加号之前的单词边界

c# - WP - 如何以编程方式删除 hyperlinkBut​​ton 中的下划线?

c# - 可序列化装饰器而不是 View 模型中的 SelectList?

web-services - 当 session token 无效时,我应该使用什么状态代码?

android - 无法将 Android 连接到 Web 服务

powershell - “Access Denied” 尝试以 SYSTEM 用户身份使用备用凭据执行命令

security - 使用哈希验证用户的密码?