Сделайте запрос от Frontend, используя токен Accsess, выданный для Backend - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть приложение с классической архитектурой клиент-сервер.ASP.NET Core находится в бэкэнде и во внешнем интерфейсе jQuery, Angular или vanilla-js.

Для аутентификации я использую сертифицированный сервер OpenID-Connect.(keycloak)

До сих пор я могу войти в систему через промежуточное ПО аутентификации ядра asp.net.Получить мой токен доступа и обновить токен.

Моя конфигурация выглядит следующим образом:

services.AddAuthentication(options =>
{
    options.DefaultScheme = "Cookies";
    options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
    options.RequireHttpsMetadata = false;
    options.MetadataAddress = Configuration["IdentityServer:Metadata"];

    options.ClientId = Configuration["IdentityServer:ClientId"];
    options.ClientSecret = Configuration["IdentityServer:ClientSecret"];
    options.SaveTokens = true;

    options.ResponseType = "code";

    options.Scope.Add("openid profile email web origons roles SocpoeOnlyForDeveopers");
});

Теперь я хочу получить доступ к ресурсам с помощью полученного токена доступа не только из моего бэкэнда, но и из моегоfrontend.

Пока что я нашел только одно решение: сохранить токен доступа в переменной js в _Layout.cshtml.

Когда срок действия токена истекает, я делаю запрос к своему бэкэндуполучить новый токен доступа.Затем в бэкэнде я прошу сервер авторизации с токеном обновления получить новый токен доступа.Затем я отправляю токен доступа обратно во внешний интерфейс.

Немного как здесь: https://medium.com/@ognjanovski.gavril/use-refresh-token-to-renew-access-token-and-resend-all-unauthorized-401-requests-that-failed-190e9c97fc3a

Поскольку срок действия моих токенов доступа истекает через 5 минут (до короткого?) (По умолчанию keycloak) тамбыло бы очень много сетевой активности.

Есть ли лучший способ?

Спасибо за вашу помощь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...