使用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对用户进行身份验证时,它会生成一个签名令牌,该令牌被发送回您的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
然后,返回应用程序并登录。