ASP.NET Identity (con IdentityServer4) obtiene un recurso externo o token de acceso

He revisado los documentos de identityServer4 y lo he configurado para usar Microsoft Office 365 como proveedor de inicio de sesión. Cuando el usuario ha iniciado sesión, quiero hacer un botón donde pueda permitir que mi aplicación se suscriba a sus eventos de calendario utilizando la API de webhooks de graph.microsoft.com

El código en startup.cs

app.UseMicrosoftAccountAuthentication(new MicrosoftAccountOptions
{
     AuthenticationScheme = "Microsoft",
     DisplayName = "Microsoft",
     SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme,

     ClientId = "CLIENT ID",
     ClientSecret = "CLIENT SECRET",
     CallbackPath = new PathString("/signin-microsoft"),
     Events = new OAuthEvents
     {
         OnCreatingTicket = context =>
         {
             redisCache.Set("AccessToken", context.AccessToken.GetBytes(), new DistributedCacheEntryOptions
             {
                 AbsoluteExpiration = DateTimeOffset.UtcNow.AddDays(3)
             });
             return Task.FromResult(context);
         }
     }
     Scope =
     {
         "Calendars.Read",
         "Calendars.Read.Shared",
     },
     SaveTokens = true
});

Pero obviamente este no es un camino viable a seguir. Solo he hecho esto con fines de prueba y para hacer un PoC de las suscripciones necesarias.

Ahora me gustaría saber si hay una manera más inteligente de comunicarme con el servidor de identidad que me permita obtener este token de acceso externo, de modo que pueda usar la API de Microsoft en nombre de mis usuarios registrados.

¿O es mi única opción tomar el Microsoft AccessToken directamente de este OAuthEvent y almacenarlo directamente en una base de datos, vinculada al usuario conectado?

Realmente necesito esto, ya que la mayor parte de mi funcionalidad se basa en datos de terceros.

Respuestas a la pregunta(1)

Su respuesta a la pregunta