Я прошел через документы identServer4, и я установил его для использования Microsoft Office 365 в качестве поставщика логина. Когда пользователь вошел в систему, я хочу сделать кнопку, где он может позволить мое приложение, чтобы подписаться на его события календаря с помощью webhooks апи из graph.microsoft.comИдентификатор ASP.NET (с IdentityServer4) получает внешний токен доступа oauth доступа
Код в 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
});
Но это, очевидно, не жизнеспособный путь. Я сделал это только для целей тестирования и для того, чтобы сделать PoC необходимых подписей.
Теперь я хотел бы знать, есть ли более умный способ связи с идентификатором Server, который позволяет мне получить этот токен внешнего доступа, чтобы я мог использовать microsoft api от имени моих зарегистрированных пользователей?
Или мой единственный вариант - взять Microsoft AccessToken прямо из этого OAuthEvent и сохранить его непосредственно в базе данных, связанной с зарегистрированным пользователем?
Мне это действительно нужно, поскольку большинство моих функций основано на данных третьих лиц.
Привет Кристиана , используете ли вы все части в одном проекте asp.net или имеете другую конечную точку для IdentityServer? –
@AmrElsehemy Я размещаю сервер идентификации в отдельном проекте. Мы используем микросервисы, а наши другие API-интерфейсы взаимодействуют с сервером идентификации через промежуточное программное обеспечение проверки доступа к токену. Надеюсь, что это ответ на ваш вопрос. –
Спасибо, еще один вопрос: сервер идентификации, размещенный в той же конечной точке или внешний, который лучше использовать? –