我配置的Identity Server:如何設置客戶端cookie的到期日期?
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" },
};
});
}
和客戶端服務器:
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);
}
當 「記住我」 選項身份餅乾已經過期日期用戶登錄:
idsvr.session expires 04 October ...
但客戶端的cookie不:
.AspNet.Cookies at end of session
我應該如何設置相同的到期日期到客戶端cookie?
UPDATE:
我可以設置客戶端應用程序的任何截止日期:
authenticationOptions.Provider = new CookieAuthenticationProvider()
{
OnResponseSignIn = (context) =>
{
var isPersistent = context.Properties.IsPersistent;
if (isPersistent) // Always false
{
context.CookieOptions.Expires = DateTime.UtcNow.AddDays(30);
}
}
};
但我不能確定何時設定截止日期。只有在用戶選擇「記住我」時才應該設置,但客戶端的IsPersistent選項始終爲false。
的問題存在於簡單的樣板項目過於: https://identityserver.github.io/Documentation/docsv2/overview/mvcGettingStarted.html
UPDATE2:
我需要,因爲漏洞在Safari中的客戶端的cookie是持久 - https://openradar.appspot.com/14408523
也許有些存在解決方法,所以我可以通過Identity to Client回傳過期日期?
UPDATE3:
其實,我們的身份和客戶端服務器有像app.server.local
和id.server.local
相同的父域。也許我可以通過屬於父域的其他cookie(.server.local
)傳遞過期日期?但我不知道可以在Identity上寫什麼,以及它可以在Client上應用的位置。
問題尋求幫助調試(「**爲什麼不是這個代碼工作?**」)必須包括所期望的行爲,一*特定問題或錯誤,並在最短的代碼必要*重現它在**這個問題本身**。沒有**明確問題陳述**的問題對其他讀者沒有用處。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –