konfiguriert I Identity Server:Wie setze ich das Ablaufdatum auf Client-Cookies?
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" },
};
});
}
und Client-Server:
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);
}
Wenn Benutzer-Login mit "Remember Me" Option Identität Cookie abgelaufen Datum hat:
idsvr.session expires 04 October ...
Aber Client-Cookie nicht:
.AspNet.Cookies at end of session
Was kann ich tun, um das gleiche Ablaufdatum für den Client-Cookie festzulegen?
UPDATE:
ich jedes Ablaufdatum in Client-Anwendung einstellen:
authenticationOptions.Provider = new CookieAuthenticationProvider()
{
OnResponseSignIn = (context) =>
{
var isPersistent = context.Properties.IsPersistent;
if (isPersistent) // Always false
{
context.CookieOptions.Expires = DateTime.UtcNow.AddDays(30);
}
}
};
Aber ich kann nicht bestimmen, wann das Ablaufdatum einzustellen. Es sollte nur festgelegt werden, wenn der Benutzer "Remember Me" auswählt, die IsPersistent-Option jedoch immer auf der Clientseite falsch ist. Auch
Das Problem auf einfache Text Projekt existiert: https://identityserver.github.io/Documentation/docsv2/overview/mvcGettingStarted.html
UPDATE2:
Ich brauche Client Cookie wegen Fehler in Safari hartnäckig zu sein - https://openradar.appspot.com/14408523
Vielleicht einige Abhilfe besteht, kann ich das Ablaufdatum im Callback von Identity zum Client weitergeben?
UPDATE3:
Eigentlich unsere Identität und Client-Server verfügen über gleiche übergeordnete Domäne wie app.server.local
und id.server.local
. Vielleicht kann ich das Ablaufdatum über ein zusätzliches Cookie übergeben, das zur übergeordneten Domain gehört (.server.local
)? Aber ich habe keine Ahnung, wo es auf Identity geschrieben werden kann und wo es auf den Client angewendet werden kann.
Fragen Debug-Hilfe zu suchen („**, warum nicht dieser Code funktioniert? **“) muss das gewünschte Verhalten, ein * spezifisches Problem oder Fehler und die kürzesten Code erforderlich * umfassen, es zu reproduzieren ** in die Frage selbst **. Fragen ohne ** eine klare Problemstellung ** sind für andere Leser nicht nützlich. Siehe: [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve). –