将 ADFS SSO 集成到现有的 .net Web 应用程序中
Integrating ADFS SSO into existing .net web application
我已经正确设置了活动目录,我可以使用 URL 进入 IDP 登录页面,如下所示:
https://SERVER/adfs/ls/idpinitiatedsignon.htm
我创建了一个新项目,并且能够通过该应用程序进行简单的登录。
现在我正在尝试将其实现到当前的 Web 应用程序代码中。
在简单项目中,以下代码运行后,跳转至IDP登录页面
public class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
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
});
}
}
当此代码在现有项目中运行时,它从不重定向,而是继续加载 Default.aspx 页面。我错过了什么吗?如果用户尚未登录,我希望他们登录,但我不明白为什么应用程序没有重定向到登录。任何帮助将不胜感激。
经过几天的尝试,我找到了解决方案。我将此代码添加到 Default.aspx page_load 方法的顶部 运行 如果未登录:
if (!System.Web.HttpContext.Current.Request.IsAuthenticated)
{
System.Web.HttpContext.Current.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" },
WsFederationAuthenticationDefaults.AuthenticationType);
}
我已经正确设置了活动目录,我可以使用 URL 进入 IDP 登录页面,如下所示:
https://SERVER/adfs/ls/idpinitiatedsignon.htm
我创建了一个新项目,并且能够通过该应用程序进行简单的登录。
现在我正在尝试将其实现到当前的 Web 应用程序代码中。
在简单项目中,以下代码运行后,跳转至IDP登录页面
public class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
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
});
}
}
当此代码在现有项目中运行时,它从不重定向,而是继续加载 Default.aspx 页面。我错过了什么吗?如果用户尚未登录,我希望他们登录,但我不明白为什么应用程序没有重定向到登录。任何帮助将不胜感激。
经过几天的尝试,我找到了解决方案。我将此代码添加到 Default.aspx page_load 方法的顶部 运行 如果未登录:
if (!System.Web.HttpContext.Current.Request.IsAuthenticated)
{
System.Web.HttpContext.Current.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" },
WsFederationAuthenticationDefaults.AuthenticationType);
}