使用ADFS身份验证以其他用户身份登录

时间:2015-08-12 19:08:31

标签: c# asp.net-mvc authentication adfs

我不熟悉在Web应用程序中使用ADFS并需要一些帮助。

我创建了一个简单的mvc Web应用程序,似乎有ADFS工作(当我访问网站时,它通过adfs服务器进行身份验证并重定向到我的网站)。现在,我想要的功能之一是管理员只能在我的网站上模拟用户,以便他们可以看到该网站就像他们是模仿用户一样。例如,如果我以John Smith身份登录,那么我的HttpContext.Current.User就是John Smith。我很容易在我的旧网站上这样做,因为我可以设置auth cookie。

所以问题是有办法做到这一点吗?

有些代码可能有助于理解我的设置。

Startup.Auth.cs

public partial class Startup
{
    private static string realm = ConfigurationManager.AppSettings["ida:Wtrealm"];
    private static string adfsMetadata = ConfigurationManager.AppSettings["ida:ADFSMetadata"];

    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseWsFederationAuthentication(
            new WsFederationAuthenticationOptions
            {
                Wtrealm = realm,
                MetadataAddress = adfsMetadata
            });
    }
}

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

你真的不能这样做。当ADFS对用户进行身份验证时,它会生成一个签名令牌,该令牌会被发送回您的Web应用程序。 WsFederationAuthentication中间件接收此令牌,验证它并从中创建声明主体。

您的Cookie中间件将声明主体序列化为在应用程序之间来回传递的Cookie。

要使您想要的工作,您需要让ADFS为其他人发出令牌。没有他们的证书将无法工作。

通常,您的应用程序会根据用户所在的角色更改其外观。您可以让ADFS对SQL存储执行角色查找,并让它针对SQL存储发出不同的角色声明一个用户。这将允许您以与同一角色中的其他人相同的方式体验应用程序。

答案 1 :(得分:0)

以下是我在使用ADFS时以其他用户身份登录的方式:

使用Windows上的ADFS 2.0,您可以通过更改c:\ windows \ inetpub \ adfs \ ls目录下web.config文件中本地身份验证类型的顺序,将adfs服务器配置为使用不同的身份验证方法。

方法1:当ADFS使用Windows身份验证进行身份验证时

按住SHIFT并右键单击“浏览器”链接,使用不同的凭据打开浏览器。然后访问您的应用程序,您将使用浏览器运行的任何信誉登录。

在用户工作站上注销和/或切换用户。

方法2:更改ADFS服务器以使用基于表单的身份验证。 退出应用程序。

退出adfs服务器,转到以下链接:

的https:// {DNS_name_of_RP_STS} /adfs/ls/?wa=wsignout1.0

然后,返回应用程序并登录。