Beispiel #1
0
        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);
        }
Beispiel #2
0
 public SessionTokenModel(
     ITokenManager <SessionTokenStorage> sessionTokenManager,
     IFakeTokenFetchService fakeTokenFetchService,
     ISessionOAuth2Introspection sessionOAuth2Introspection,
     ILogger <SessionTokenModel> logger)
 {
     _sessionOAuth2Introspection = sessionOAuth2Introspection;
     _sessionTokenManager        = sessionTokenManager;
     _fakeTokenFetchService      = fakeTokenFetchService;
     _logger = logger;
 }