【问题标题】:How do I change the value returned by WindowsIdentity.GetCurrent in ASP.net?如何在 ASP.net 中更改 WindowsIdentity.GetCurrent 返回的值?
【发布时间】:2010-01-07 18:06:15
【问题描述】:

我正在编写一个 ASP.net 应用程序,并且正在使用 WindowsIdentity.GetCurrent() 函数。我想知道如何(或是否有可能)更改 ASP.net 应用程序运行的身份。

我最终希望将它作为与最终用户关联的帐户运行。我知道我可以在 IIS 中使用 Windows 身份验证来执行此操作,但 Windows 身份验证不适用于我的特定应用程序。如果我可以使用 AD 用户名和密码以编程方式让用户登录,那就没问题了。

如何设置WindowsIdentity ASP.net 应用程序在 IIS 中不使用 Windows 身份验证运行?

更新: 这个问题已经闲置了很长时间。我认为也许框架不允许我做我在这里描述的事情。有谁知道这是被禁止或被认为是不好的做法?

【问题讨论】:

    标签: .net asp.net security iis windows-identity


    【解决方案1】:

    你需要使用Impersonation

    或者,如果您想使用严格的代码来实现模拟,请查看以下示例:

    How to implement impersonation in an ASP.NET application

    【讨论】:

    • 模拟工作在一定程度上以特定身份执行操作,但是必须模拟必须以特定用户身份执行的每个操作非常麻烦。使用 Windows 身份验证,您可以在 web.config 中设置 ,它将被自动模拟。即使我没有使用模拟,我也希望拥有相同的功能。
    • 如果不使用某种形式的模仿,您将无法完成您的要求。
    • 所以,澄清一下,你是说如果我不在 IIS 中使用 Windows 身份验证,我不能使用 web.config 中的 自动模拟以编程方式登录的用户?
    • 不,我不是这个意思。我以为你是在说你不能接受模拟。检查此表以了解不同设置的可能性:msdn.microsoft.com/en-us/library/aa302377.aspx
    • 其实我已经看过你链接的文档了。在表中,作者指出,如果没有某些 Windows Authentication,则只会返回 ASP.net 进程或匿名用户。这就是我问的原因,是否可以通过编程方式设置由 WindowsIdentity.GetCurrent() 返回的用户。
    猜你喜欢
    • 1970-01-01
    • 2018-10-20
    • 2014-02-11
    • 1970-01-01
    • 2011-05-25
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    相关资源
    最近更新 更多