По какой-то причине пользователи получают перенаправление обратно на login.microsoftonline.com почти каждые 10/20 минут. Это довольно раздражает, так как приведенный ниже код используется для входа в систему для пользователей CMS.Пользователи выходят из системы каждые 10-20 минут (аутентификация претензий)
Может ли кто-нибудь сказать мне, что не так, со следующим кодом и почему наши пользователи выходят из системы/перенаправляются обратно на login.microsoftonline.com? Срок службы сеанса равен 60 минутам, поэтому он должен быть чем-то с самой авторизацией.
Должны ли мы использовать WsFederationAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType или DefaultAuthenticationTypes.ApplicationCookie?
Мы хотим, чтобы пользователи могли войти используя форму (/ счет/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, но нет четкого ответа/учебника, в котором объясняются разные типы полномочий, их свойства и способы их использования.
Благодарим вас за ответ. Однако он установлен на 30 минут, и текущий пользователь выходит из системы каждые 10-20 минут, а для SlidingExpiration установлено значение true. Почему пользователи выходят из системы, хотя включена функция SlidingExpiration? Будет ли функция регенерацииIdentity генерировать новую действительную идентификацию? Я не могу думать ни о чем другом. – Robin