現在、OpenIdConnect認証モデルを使用してAzure ADを使用して.NET Core Appを認証するときに、cookie/authトークンでタイムアウトを設定することに苦労しています。Azure AD OpenIdConnectとカスタムミドルウェアを使用したASP NETコア認証の有効期限
サインインスキームは、次の経由ConfigureServices方式に設定されている:私はないですという
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
CookieName = "MyCookie",
ExpireTimeSpan = TimeSpan.FromHours(2)
});
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions()
{
Authority = authorityUri.AbsoluteUri,
ClientId = azureOptions.ClientId,
ClientSecret = azureOptions.ClientSecret,
ResponseType = OpenIdConnectResponseTypes.CodeIdToken,
Events = new OpenIdConnectEvents()
{
OnAuthorizationCodeReceived = async context =>
{
await aAuthenticateMiddleware.OnAuthenticate(context, logger);
}
}
});
app.UseMiddleware<aAuthenticateMiddleware>();
注:
services.AddAuthentication(options => options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme);
次のように私はその後、私の構成を設定しています(私たちの目的にとって実用的ではない)アイデンティティを使用して、カスタムミドルウェアを使用します。
var authenticationProperties = new AuthenticationProperties() { RedirectUri = context.Request.Path.Value ?? "/" };
authenticationProperties.AllowRefresh = false;
authenticationProperties.IssuedUtc = DateTime.Now;
authenticationProperties.ExpiresUtc = DateTime.Now.AddHours(2);
await context.Authentication.ChallengeAsync(
authenticationManager.IdentityProvider.AuthenticationScheme,
authenticationProperties,
ChallengeBehavior.Automatic
);
これは、すべてが正常に動作していると(ただし、これは認証トークンを発行している、正しくなど、ユーザーを認証します:私はないチャレンジが発行された場合、ユーザーが認証されているかどうかをチェックしていますミドルウェア層内
とクッキー)15分の有効期限を設定して私の2時間の有効期限を無視しています。私は、例としてaspnet/securityリポジトリのGitHubの最新のソースの例を参照していますが、発行されたデフォルトの有効期限を無効にすることについては言及していません。私が発見した
https://github.com/aspnet/Security/tree/dev/samples/OpenIdConnect.AzureAdSample
例のほとんどは、まだ古いのASPNETライブラリではなくAspNetCoreライブラリを参照しています。
永続化をTrueに設定してSignInAsyncを使用すると、ExpireTimeSpanを有効にすることができますが、これを呼び出すと「サポートされていない例外」がスローされます。おそらくSignInAsyncはAzure ADでサポートされていませんか?
誰でもこれを達成する方法についての洞察はありますか?