public async Task Invoke(HttpContext context, ISessionOAuth2Introspection sessionOAuth2Introspection, ITokenManager <SessionTokenStorage> sessionTokenManager, IServiceProvider serviceProvider ) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (context.User.Identity.IsAuthenticated && sessionOAuth2Introspection.IsActive) { var key = sessionOAuth2Introspection.ManagedTokenKey; _logger.LogInformation($"SessionOAuth2IntrospectionMiddleware:{key}"); var managedToken = await sessionTokenManager.GetManagedTokenAsync(key); if (managedToken == null) { var signinManager = serviceProvider.GetRequiredService <ISigninManager>(); await signinManager.SignOutAsync(); context.Session.Clear(); context.Response.Redirect(_options.RedirectUrl); return; } } await _next(context); }
public SessionTokenModel( ITokenManager <SessionTokenStorage> sessionTokenManager, IFakeTokenFetchService fakeTokenFetchService, ISessionOAuth2Introspection sessionOAuth2Introspection, ILogger <SessionTokenModel> logger) { _sessionOAuth2Introspection = sessionOAuth2Introspection; _sessionTokenManager = sessionTokenManager; _fakeTokenFetchService = fakeTokenFetchService; _logger = logger; }