我有一个Web应用程序,它使用ACS联合多个身份提供程序,我正在尝试迁移以使用OWIN。我在一个单独的应用程序(与我共享SSO体验)中有一个自定义登录页面,我可以使用我在 wsfederation 配置元素中的 issuer 属性进行指定现有的OWIN前设置。
我尝试使用OWIN复制此行为,但无论我尝试什么,未经身份验证的请求都会重定向到标准(丑陋)ACS登录页面。以下是我配置中间件组件的方法:
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = CookieAuthenticationDefaults.AuthenticationType,
AuthenticationMode = AuthenticationMode.Active,
Provider = new CookieAuthenticationProvider
{
OnResponseSignIn = ctx => TransformClaims(ctx.OwinContext.Authentication.User, loggingService)
},
ExpireTimeSpan = TimeSpan.FromMinutes(int.Parse(ConfigurationManager.AppSettings["security:slidingExpirationMins"])),
SlidingExpiration = true,
});
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
AuthenticationType = CookieAuthenticationDefaults.AuthenticationType,
MetadataAddress = "https://mylogin.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml",
Wtrealm = siteUrl,
Wreply = siteUrl,
AuthenticationMode = AuthenticationMode.Active,
});
CookieAuthenticationOptions 对象的 LoginPath 属性不起作用,因为它不在同一个应用程序中。
任何有关如何指定外部登录网址的帮助都将不胜感激!
答案 0 :(得分:0)
我建议设置为Passive WSFederation中间件AuthenticationMode,否则它将继续拦截传出401。