Аутентификация внешних запросов. Best Practice

Добрый день.

Планируем использовать свой конфигурационный сервис для интеграции со сторонним приложением. Стороннее приложение всегда будет аутентифиицироваться под одним и тем же пользователем в BPMonline. В связи с этим хотелось бы оптимизировать этот процесс.

 

Как показывают тесты, выполнение логина каждый раз перед обращение к конфигурационному сервису сильно замедляет процесс получения полезного ответа (примерно в 2 раза), увеличивает трафик, нагрузку на сервер приложений и тд. 

В связи с этим пара вопросов:

1. Как регулярно нужно аутентифицироваться в BPMonline ?

2. Можно ли перед тем как обращаться к конфигурационному сервису как-то убедиться, что аутентификация успешно выполнена и непросрочена, не посылая дополнительных запросов в BPM?

Вот такой код не работает, поскольку свойства Expires и Expired заполняются только у куки UserName и там примерно сутки время жизни, а 401 ошибку мы начинаем получать гораздо раньше

       public static bool CheckCookiesValid()
        {
            var cookieContainer = LoginClass.AuthCookie;
            var cookies = cookieContainer.GetCookies(new Uri(serviceUri));
            if (cookies.Count < 4)
            {
                return false;
            }
            foreach (Cookie cookie in cookies)
            {
                if (cookie.Expired)
                {
                    return false;
                }
             }
            return true;
        }

или же не стоит с этим всем заморачиваться и просто каждый раз перед обращением к сервису делать LoginClass.TryLogin ?

полный исходник прилагаю

Прикрепленные файлы

Нравится

1 комментарий

Каждый раз авторизироваться точно не стоит, это захламляет таблицу SysUserSession, которая вырастает до огромного объёма и каждая вставка в неё проходит всё тяжелее.

Пример работы с авторизацией, а затем с данными по интеграции есть в академии.

Прерывание сессии раньше срока может быть вызвано различными причинами, например, очисткой Redis на сервере. Если при попытке считать или записать данные выдало об отсутствии авторизации, проще авторизироваться раз повторно и далее работать уже с новыми куками.

Показать все комментарии