2017-02-24 2 views
2

クライアントとしてのMVCアプリケーションであるIdentityServer4と、保護されたリソースとしてのAPIがあります。 Client(IdentityServerのクラス)には、AccessTokenLifetime,IdentityTokenLifetime,AuthorizationCodeLifetimeというプロパティがあります。 これらのプロパティを異なる値に設定すると(1時間、2時間、3時間を想像してください)。これらのプロパティは、クッキーの有効期限のタイムスパンにどのように関係していますか?IdentityServerのCookieミドルウェアとトークンの有効期間

(MVCクライアント上の)Cookieミドルウェアはこのように見え、有効期限は8時間です。また、IdentityServer上のCookieミドルウェアの有効期限は10時間です。

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationScheme = "Cookies", 
    AutomaticAuthenticate = true, 
    ExpireTimeSpan = TimeSpan.FromHours(8) 
}); 

クッキーが期限切れになる前にトークンが期限切れになるとどうなりますか?また、そのように処理する必要がありますか?

答えて

1

ASP.NETコアでは、3つのトークンの有効期間は、クライアントアプリケーションのCookieの有効期間に影響しません。

UseTokenLifetimeがtrueに設定されたUseOpenIdConnectAuthenticationミドルウェアを使用している場合は例外です。この場合、Cookieの有効期間はIDトークンの有効期間に設定されます。ありがたいことに、これはASP.NET 4.xのようにASP.NET Coreではデフォルトでtrueに設定されていません(結局のところ、IDトークンは通常OpenID Connectで短期間しか使用されません)。

ユーザーがアプリケーション内でまだ認証されている間にトークンの有効期限が切れる場合は、トークンを更新する必要があります。これは、リフレッシュトークンを使用するか、何らかの種類のサイレントリフレッシュポリシー(oidc-clientなど)を使用して行うことができます。

+0

トークンが期限切れになった場合、クライアントはサーバーから新しいトークンを要求する必要があることを理解しています。しかし、クライアント上のクッキーが期限切れになった、またはスライドしているクッキーであり、トークンがまだ有効な場合はどうなりますか? – user1336

+0

クライアントクッキーがトークンの前に期限切れになると、特別なことは起こりません。それらがもはや認証されない場合(クッキーがない場合)、(トークンを使用して)承認を必要とするエンドポイントに当たることはないでしょう。このシナリオは、完全にクライアントアプリケーションの責任であり、処理方法の決定です。 –

関連する問題