ASP.NET Identity (с IdentityServer4) получает токен доступа к внешнему ресурсу

Я прошел через документы для identityServer4 и настроил его для использования Microsoft Office 365 в качестве поставщика входа в систему. Когда пользователь вошел в систему, я хочу создать кнопку, с помощью которой он сможет разрешить моему приложению подписаться на события его календаря с помощью API webhooks graph.microsoft.com.

Код в автозагрузке

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
});

Но это явно не жизнеспособный путь. Я сделал это только для целей тестирования и создания PoC необходимых подписок.

Теперь я хотел бы знать, существует ли более разумный способ связи с сервером идентификации, который позволяет мне получить этот токен внешнего доступа, чтобы я мог использовать API Microsoft от имени моих вошедших в систему пользователей?

Или мой единственный вариант - взять Microsoft AccessToken непосредственно из этого OAuthEvent и сохранить его непосредственно в базе данных, связанной с зарегистрированным пользователем?

Мне это действительно нужно, так как большая часть моей функциональности основана на данных третьих сторон.

Ответы на вопрос(1)

Ваш ответ на вопрос