Правильно ли запрашивать токен доступа при КАЖДОМ вызове API в контроллерах моего веб-приложения?

У меня есть веб-API на бэкэнде, а также веб-приложение и телефонное приложение на интерфейсе. Я использую Auth0 для аутентификации OAuth/OpenId на всех трех. И веб-API, и веб-приложение написаны на ASP .Net Core 1.1 MVC.

Каждый раз, когда я вызываю веб-API из веб-приложения, я запрашиваю токен доступа от Auth0. Итак, в каждом действии контроллера, требующем доступа к моему API, у меня есть:

var client = new HttpClient();
                var tokenResponse = await client.PostAsync(tokenEndpoint,
                    new FormUrlEncodedContent(new List<KeyValuePair<string, string>>
                    {
                new KeyValuePair<string, string>("grant_type", "client_credentials"),                
                new KeyValuePair<string, string>("client_id", _auth0Settings.ClientId),
                new KeyValuePair<string, string>("client_secret", _auth0Settings.ClientSecret),
                new KeyValuePair<string, string>("audience", _auth0Settings.ApiIdentifier),
                    }));

Это правильный способ сделать это? Или я должен просто выполнить это один раз при запуске веб-приложения, а затем сохранить токен доступа в глобальной переменной, которую я могу вызывать со всех своих контроллеров?


person Fabricio Rodriguez    schedule 25.05.2017    source источник


Ответы (1)


Вы должны позвонить только один раз и повторно использовать токен. Когда срок действия токена истек, вы должны запросить новый токен с токеном обновления. Если вы не используете токены обновления, вы должны перенаправить пользователя на страницу входа для повторной аутентификации или иметь какой-то механизм автоматической повторной аутентификации в веб-приложении.

person Stan88    schedule 25.05.2017
comment
Должно ли приложение проверять срок действия с использованием даты истечения срока действия в токене или получать новый токен после 401 или другой ошибки авторизации. - person Mark Redman; 23.10.2017
comment
Приложение должно получить новый токен после 401 из веб-API. срок действия должен быть проверен на веб-API. Я также немного обновил свой ответ. - person Stan88; 23.10.2017