I configuré Identity Server:Comment définir la date d'expiration pour les cookies client?
public void Configuration(IAppBuilder app)
{
var factory = new IdentityServerServiceFactory().UseInMemoryClients(new Client[] {
new Client()
{
ClientName = "MyClient",
ClientId = "MyClientId",
Enabled = true,
Flow = Flows.Implicit,
RedirectUris = new List<string> { "MyClientServer/callback" },
};
});
}
et client serveur:
public void Configuration(IAppBuilder app)
{
var cookieOptions = new CookieAuthenticationOptions();
cookieOptions.AuthenticationType = "Cookies";
app.UseCookieAuthentication(cookieOptions);
var authenticationOptions = new OpenIdConnectAuthenticationOptions() {
Authority = "https://MyIdentityServer/core",
ClientId = "MyClientId",
SignInAsAuthenticationType = "Cookies",
UseTokenLifetime = true,
RedirectUri = "MyClientServer/callback"
});
app.UseOpenIdConnectAuthentication(authenticationOptions);
}
Lorsque la connexion de l'utilisateur avec "Remember Me" option de cookie identité a expiré Date:
idsvr.session expires 04 October ...
Mais cookies client pas:
.AspNet.Cookies at end of session
Que dois-je faire pour définir la même date d'expiration pour le cookie client?
MISE À JOUR:
Je peux définir une date d'expiration dans l'application client:
authenticationOptions.Provider = new CookieAuthenticationProvider()
{
OnResponseSignIn = (context) =>
{
var isPersistent = context.Properties.IsPersistent;
if (isPersistent) // Always false
{
context.CookieOptions.Expires = DateTime.UtcNow.AddDays(30);
}
}
};
Mais je ne peux pas déterminer quand régler la date d'expiration. Il doit être défini uniquement lorsque l'utilisateur sélectionne "Remember Me", mais l'option IsPersistent est toujours false sur le côté client.
Le problème existe sur le projet de texte standard simple aussi: https://identityserver.github.io/Documentation/docsv2/overview/mvcGettingStarted.html
MAJ2:
J'ai besoin cookie client d'être persistant à cause de bug dans Safari - https://openradar.appspot.com/14408523
Peut-être une solution de contournement existe, donc je peux passer la date d'expiration dans le rappel de l'identité au client?
Update3:
En fait, nos serveurs d'identité et les clients ont le même domaine parent comme app.server.local
et id.server.local
. Peut-être que je peux transmettre la date d'expiration via un cookie supplémentaire appartenant au domaine parent (.server.local
)? Mais je n'ai aucune idée d'où il peut être écrit sur l'identité, et où il peut être appliqué sur le client.
questions visant à obtenir l'aide de débogage (« ** pourquoi ne serait-ce code? Travail ** ») doivent inclure le comportement souhaité, un problème spécifique * ou une erreur et le code le plus court nécessaire * de le reproduire ** dans la question elle-même **. Les questions sans ** un énoncé de problème clair ** ne sont pas utiles aux autres lecteurs. Voir: [Comment créer un exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve). –