使用ADFS身份验证以不同用户登录

本文关键字:用户 登录 ADFS 身份验证 使用 | 更新日期: 2023-09-27 18:07:40

我是在web应用程序中使用ADFS的新手,需要一些帮助。

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

使用ADFS身份验证以不同用户登录

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

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

要使工作如您所愿,您需要让ADFS为其他人发出令牌。如果没有他们的凭据,将无法工作。

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

以下是我使用ADFS时作为不同用户登录的方式:

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

方法1:当ADFS使用Windows Authentication

进行身份验证时

通过按住SHIFT并右键单击browser链接来使用不同的凭据打开浏览器。然后访问你的应用程序,你将以浏览器运行的任何信用登录。

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

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

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

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

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