Pour une raison quelconque, les utilisateurs sont redirigés vers login.microsoftonline.com presque toutes les 10/20 minutes. C'est assez ennuyeux, puisque le code ci-dessous est utilisé pour connecter les utilisateurs à un CMS.Les utilisateurs se déconnectent toutes les 10 à 20 minutes (authentification des revendications)
Quelqu'un pourrait-il me dire ce qui ne va pas avec le code suivant et pourquoi nos utilisateurs se déconnectent/redirigent vers login.microsoftonline.com? La durée de vie de la session est fixée à 60 minutes, il doit donc s'agir de quelque chose avec l'autorisation elle-même.
Devrions-nous utiliser WsFederationAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType ou DefaultAuthenticationTypes.ApplicationCookie?
Nous voulons permettre aux utilisateurs de se connecter en utilisant un formulaire (/ compte/inloggen) ou à l'aide d'un bouton appelé « Azure SSO » (qui est une connexion externe)
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);
}
Quand et pourquoi devrions-nous utiliser ce?
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
Comme vous l'avez peut-être remarqué im assez nouveau à tout cela. J'ai parcouru le débordement de pile et googlé beaucoup d'exemples, mais il n'y a pas de réponse/tutoriel clair qui explique les différents types d'autorisation, leurs propriétés et comment ils sont utilisés.
Merci pour votre réponse. Toutefois, il est défini sur 30 minutes et l'utilisateur actuel est déconnecté toutes les 10-20 minutes, tandis que SlidingExpiration est défini sur true. Comment se fait-il que les utilisateurs se déconnectent même si SlidingExpiration est activé? La fonction regenerateIdentity ne générerait-elle pas une nouvelle identité valide? Je ne peux pas penser à autre chose. – Robin