我不熟悉在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
});
}
}
任何帮助都将不胜感激。
答案 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
然后,返回应用程序并登录。