如何从 MVC 应用程序发出的 WCF 服务调用中获取 domain\username?
How do I fetch the domain\username from a WCF service call made from MVC application?
我有一个 ASP.NET 服务托管在 IIS 运行 带有服务帐户的应用程序池上。我需要从 MVC 控制器中获取调用服务的用户的用户名和域。我怎样才能获取所需的详细信息?
详细信息需要在服务中获取,而不是从 MVC 应用程序发送。
我试过使用 WindowsIdentity.GetCurrent().Name 但它给了我服务帐户的详细信息。
您可以尝试使用HttpContext.Current.User.Identity.Name,需要在IIS中启用windows认证:
HttpContext.Current.User.Identity.Name
获取 ASP.NET 中的用户用户名:
场景 1:IIS 中的匿名身份验证关闭模拟:
如您所见,运行 匿名身份验证 HttpContext.Current.Request.LogonUserIdentity 是 IIS 中定义的匿名来宾用户(本例中为 IUSR_COMPUTER1),并且该用户未经过身份验证Windows标识设置为 运行 进程 (ASPNET) 的标识,并且未设置 HttpContext.Current.User.Identity。
场景 2:Windows IIS 中的身份验证,模拟关闭:
然而,使用 Windows 身份验证使远程用户能够通过其域帐户自动进行身份验证(即 IsAuthenticated 为真),因此 HttpContext.Current.Request 用户被设置为远程客户端用户帐户的用户,包括身份对象。
场景 3:IIS 中的匿名身份验证,模拟:
这次我们使用匿名身份验证,但现在在 web.config 中启用了 ASP.net 模拟。与第一种情况的唯一区别是现在匿名来宾用户 IUSR_COMPUTER1 正在被模拟,因此 System.Environment 和 Security.Principle 在该帐户的权限下使用 运行。
场景 4:Windows IIS 中的身份验证,模拟:
现在,Windows 对所有内容的身份验证和模拟都是 运行 作为我们调用用户的域帐户。这意味着 ASP.net 工作进程将共享该用户的特权。
我有一个 ASP.NET 服务托管在 IIS 运行 带有服务帐户的应用程序池上。我需要从 MVC 控制器中获取调用服务的用户的用户名和域。我怎样才能获取所需的详细信息? 详细信息需要在服务中获取,而不是从 MVC 应用程序发送。 我试过使用 WindowsIdentity.GetCurrent().Name 但它给了我服务帐户的详细信息。
您可以尝试使用HttpContext.Current.User.Identity.Name,需要在IIS中启用windows认证:
HttpContext.Current.User.Identity.Name
获取 ASP.NET 中的用户用户名:
场景 1:IIS 中的匿名身份验证关闭模拟:
如您所见,运行 匿名身份验证 HttpContext.Current.Request.LogonUserIdentity 是 IIS 中定义的匿名来宾用户(本例中为 IUSR_COMPUTER1),并且该用户未经过身份验证Windows标识设置为 运行 进程 (ASPNET) 的标识,并且未设置 HttpContext.Current.User.Identity。
场景 2:Windows IIS 中的身份验证,模拟关闭:
然而,使用 Windows 身份验证使远程用户能够通过其域帐户自动进行身份验证(即 IsAuthenticated 为真),因此 HttpContext.Current.Request 用户被设置为远程客户端用户帐户的用户,包括身份对象。
场景 3:IIS 中的匿名身份验证,模拟:
这次我们使用匿名身份验证,但现在在 web.config 中启用了 ASP.net 模拟。与第一种情况的唯一区别是现在匿名来宾用户 IUSR_COMPUTER1 正在被模拟,因此 System.Environment 和 Security.Principle 在该帐户的权限下使用 运行。
场景 4:Windows IIS 中的身份验证,模拟:
现在,Windows 对所有内容的身份验证和模拟都是 运行 作为我们调用用户的域帐户。这意味着 ASP.net 工作进程将共享该用户的特权。