skonfigurowałem Identity Serwer:Jak ustawić datę wygaśnięcia na pliki cookie klienta?
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" },
};
});
}
i klient-serwer:
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);
}
Podczas logowania użytkownika z "Remember Me" ciasteczka opcja Identity wygasła data:
idsvr.session expires 04 October ...
Ale klient ciasteczka nie:
.AspNet.Cookies at end of session
Co należy zrobić, aby ustawić tę samą datę wygaśnięcia na plik cookie klienta?
UPDATE:
mogę ustawić dowolną datę ważności w aplikacji klienckiej:
authenticationOptions.Provider = new CookieAuthenticationProvider()
{
OnResponseSignIn = (context) =>
{
var isPersistent = context.Properties.IsPersistent;
if (isPersistent) // Always false
{
context.CookieOptions.Expires = DateTime.UtcNow.AddDays(30);
}
}
};
Ale nie mogę określić, kiedy należy ustawić datę ważności. Powinien być ustawiony tylko wtedy, gdy użytkownik wybierze opcję "Remember Me", ale opcja IsPersistent zawsze będzie fałszywa po stronie klienta.
Problem istnieje w prosty projekt boilerplate też: https://identityserver.github.io/Documentation/docsv2/overview/mvcGettingStarted.html
Update2:
muszę cookies klient nie będzie trwała z powodu błędów w Safari - https://openradar.appspot.com/14408523
Może jakiś obejście istnieje, więc mogę przekazać datę wygaśnięcia w oddzwanianiu od tożsamości do klienta?
UPDATE3:
Faktycznie, nasze serwery tożsamości klienta i mają tę samą domenę nadrzędną jak app.server.local
i id.server.local
. Może mogę przekazać datę wygaśnięcia za pomocą dodatkowego pliku cookie, który należy do domeny nadrzędnej (.server.local
)? Ale nie mam pojęcia, gdzie można go zapisać na Tożsamości i gdzie można go zastosować na Kliencie.
pytania szuka pomocy debugowania („**, dlaczego nie jest to kod działa? **”) musi zawierać pożądane zachowanie, a * konkretny problem lub błąd i najkrótszą kodu niezbędnego * aby go odtworzyć ** w samo pytanie **. Pytania bez ** jasnego stwierdzenia problemu ** nie są przydatne dla innych czytelników. Zobacz: [Jak utworzyć przykład minimalny, kompletny i sprawdzalny] (http://stackoverflow.com/help/mcve). –