Преобразователь зависимости sbt с базовым значением auth - программирование
Подтвердить что ты не робот

Преобразователь зависимости sbt с базовым значением auth

У меня есть nginx для моего репозитория maven с базовой авторизацией.

У моего build.sbt есть:

credentials += Credentials("maven repository", "rep.com", "sbt", "password")

resolvers ++= Seq(
  "maven repository" at "http://rep.com:8080/"
)

но sbt не может найти модуль, потому что sbt не использует базовую авторизацию.

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

012/07/22 20:02:21 [error] 3338#0: *14 no user/password was provided for basic authentication, client: 8.32.39.29, server: rep.com, request: "HEAD /some/cool_2.9.1/0.1-SNAPSHOT/cool_2.9.1-0.1-SNAPSHOT.pom HTTP/1.1", host: "rep.com:8080"

Я не хочу публиковать артефакты через nginx. Базовый auth нужен только для ограниченного доступа к артефактам.

Как я могу ограничить доступ и работать с репозиторием в sbt?

4b9b3361

Ответ 1

Как насчет добавления следующего в ваш ~/.ivy2/.credentials:

realm=maven repository
host=rep.com:8080
user=username
password=password

а затем используйте Credentials(Path.userHome / ".ivy2" / ".credentials")

вам нужно убедиться, что ваше царство настроено правильно: curl http://rep.com:8080 -vv 2>&1 | egrep "realm|host" (Возможно, я ошибаюсь, но "хост", возможно, должен соответствовать заголовку узла, то есть rep.com:8080, а не просто rep.com).

HTH

Ответ 2

У меня была такая же проблема с репозиторием SVN, который использует базовый AUTH. Этот пост и тот, который был указан выше, дали мне ответ, который я резюмирую ниже.

Как указано выше, все о правильном правиле:

В build.sbt я устанавливаю свой резольвер следующим образом:

resolvers += {
Credentials.add("<realm>", "<svnhost?", "<username>", "<password>")
Resolver.url("name", url("http://<svnhost>/<path>/"))(Resolver.ivyStylePatterns) 
}

Чтобы найти значение царства, которое является первым параметром для Credentials.add, я сделал

curl http://<svn host> -v

и использовал значение основного значения Realm, указанное в заголовке WWW-Authenticate:

WWW-Authenticate: Basic realm="<realm>"

Надеюсь, это поможет.

Ответ 3

Не знаю, работает ли он, но просто попробуйте добавить базовый auth в URL:

resolvers ++= Seq(
  "maven repository" at "http://username:[email protected]:8080/"
)