У меня есть старое приложение ASP.Net MVC 5, в котором уже реализована платформа Identity для входа пользователей на веб-сайт. Мы начали переходить на архитектуру микро-сервисов и теперь нуждаемся в аутентификации запросов к API (API находятся в ядре .net).
Мне удалось создать сервер идентификации и использовать почтальон с потоком ResourceOwnerPasswordAndClientCredentials , который может создавать токен jwt и аутентифицировать пользователя в API, а также выписывать заявки.
Приложение mvc имеет страницу входа, похожую на airbnb (форма входа всплывающая на главной странице), поэтому перенаправление с веб-сайта на сервер идентификации на самом деле не вариант.
Вопрос: какой поток я предполагаю использовать?
Мой клиент на сервере идентификации в настоящее время выглядит так:
new Client
{
ClientId = "ClientWebsite",
ClientSecrets = new[] { new Secret("secret".Sha256()) },
AllowedGrantTypes = GrantTypes.ResourceOwnerPasswordAndClientCredentials,
AllowedScopes = new[] {
"WebsiteAPI",
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
IdentityServerConstants.StandardScopes.Email
}
},
Как уже упоминалось на веб-сайте клиента уже настроен для аутентификации с использованием Cookie Authentication, запуск выглядит следующим образом:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString(Settings.FormsAuthPath),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
Я знаю, что мне нужно что-то добавить после этого. Любая помощь будет оценена.