Почему Artifactory аутентифицирует пользователя при каждом запросе установки npm? - PullRequest
0 голосов
/ 06 марта 2019

Мы используем Artifactory для хранения наших локальных артефактов npm, а также для кэширования удаленного реестра npm.Для аутентификации (с учетными записями AD) в Artifactory с помощью npm мы используем базовую аутентификацию, предложенную на странице «Set Me Up» из Artifactory.Например:

_auth = < username >:< password >
email = youremail@email.com
always-auth = true

Это все работает правильно, но есть одна проблема в том, что Artifactory аутентифицирует пользователя для каждого загружаемого пакета.В этом случае журнал artifactory.log выглядит следующим образом (обратите внимание, выходные данные были отредактированы):

Trying to authenticate user 'user1' via ldap.
Attempting to bind as cn=user1,ou=someou,ou=ou1,ou=ou2,ou=ou3,dc=internal,dc=comp,dc=int
Retrieving attributes...
'user1' authenticated successfully by ldap server.
Loading LDAP groups
Finished Loading LDAP groups
Trying to authenticate user 'user1' via ldap.
Trying to authenticate user 'user1' via ldap.
Trying to authenticate user 'user1' via ldap.
Trying to authenticate user 'user1' via ldap.
Trying to authenticate user 'user1' via ldap.
Trying to authenticate user 'user1' via ldap.
Trying to authenticate user 'user1' via ldap.
Trying to authenticate user 'user1' via ldap.
Trying to authenticate user 'user1' via ldap.
Trying to authenticate user 'user1' via ldap.
Trying to authenticate user 'user1' via ldap.
Attempting to bind as cn=user1,ou=someou,ou=ou1,ou=ou2,ou=ou3,dc=internal,dc=comp,dc=int
...

Как я уже говорил, аутентификация работает, и артефакт также загружается, но эта постоянная аутентификация для каждого артефакта может иногда вызыватьтайм-аут с сервером LDAP:

Failed to authenticate user 'user1' using ldap.
org.springframework.ldap.UncategorizedLdapException: Uncategorized exception occured during LDAP processing; nested exception is javax.naming.NamingException: LDAP response read timed out, timeout used:10000ms.
    at org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:217)
    at org.springframework.ldap.core.support.AbstractContextSource.createContext(AbstractContextSource.java:285)
    at org.springframework.ldap.core.support.AbstractContextSource.doGetContext(AbstractContextSource.java:119)
    at org.springframework.ldap.core.support.AbstractContextSource.getReadOnlyContext(AbstractContextSource.java:138)
    at org.springframework.ldap.core.LdapTemplate.executeReadOnly(LdapTemplate.java:791)
    ...

Это приводит к тому, что артефакт, загружаемый в тот момент времени, не загружается, что приводит к сбою нашей сборки.

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

1 Ответ

0 голосов
/ 13 марта 2019

Поскольку каждый запрос пакета является отдельным запросом, а не частью одной длинной транзакции, которая может быть идентифицирована, Artifactory должен аутентифицировать пользователя.Подумайте о сценарии, когда один и тот же пользователь отправляет запросы с нескольких хостов, как вы убедитесь, что он имеет правильные учетные данные?

Сказав это, Artifactory имеет механизм кэширования для кэширования данных об аутентификации на внешних системах, таких как LDAPдля запросов REST API.Вы можете настроить этот кэш для уменьшения количества запросов, отправляемых на сервер LDAP, установив системное свойство artifactory.security.authentication.cache.idleTimeSecs Artifactory.
Для получения дополнительной информации, пожалуйста, посмотрите Управление безопасностью с помощью LDAP

...