出于某种原因,用户几乎每隔10/20分钟就会被重定向回login.microsoftonline.com。这非常烦人,因为下面的代码用于登录CMS的用户。
有人能告诉我以下代码有什么问题吗?为什么我们的用户会被注销/重定向回login.microsoftonline.com?会话生存期设置为60分钟,因此必须具有授权本身。
我们应该使用WsFederationAuthenticationDefaults.AuthenticationType,CookieAuthenticationDefaults.AuthenticationType还是DefaultAuthenticationTypes.ApplicationCookie?
我们希望允许用户使用表单(/ account / inloggen)或使用名为“Azure SSO”(这是外部登录)的按钮登录
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context and user manager to use a single instance per request
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
// Enable the application to use a cookie to store information for the signed in user
// and to use a cookie to temporarily store information about a user logging in with a third party login provider
// Configure the sign in cookie
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/account/inloggen"),
Provider = new CookieAuthenticationProvider
{
OnResponseSignIn = ctx =>
{
ctx.Identity = TransformClaims(ctx.Identity);
ctx.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddDays(7.0);
},
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
},
ExpireTimeSpan = TimeSpan.FromDays(7.0),
SlidingExpiration = true
});
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
},
ExpireTimeSpan = TimeSpan.FromDays(7.0),
SlidingExpiration = true
});
app.UseWsFederationAuthentication(new WsFederationAuthenticationOptions
{
MetadataAddress = "https://login.microsoftonline.com/xxxxxxxxxxxxxx/federationmetadata.xml",
Wtrealm = "https://portal.domain.com",
Caption = "Azure SSO",
SignInAsAuthenticationType = CookieAuthenticationDefaults.AuthenticationType,
UseTokenLifetime = false,
AuthenticationMode = AuthenticationMode.Passive
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
}
我们何时以及为何要使用此产品?
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
你可能已经注意到我对这一切都很新。我浏览过堆栈溢出和Googled大量示例,但没有明确的答案/教程解释了不同的授权类型,它们的属性以及如何使用它们。
答案 0 :(得分:0)
您的validateInterval:TimeSpan.FromMinutes(30)设置为30分钟。
validateInterval与给定时间名称上的过期cookie不同。 例如,用户登录位置A,然后转到位置B并登录并更改密码。然后他们在30分钟后回到位置A.他们将退出。
只要创建/更改密码或添加/删除外部登录,就会创建SecurityStampValidator。
希望它有所帮助。