2012-07-22 14 views
14

私は基本認証を持つ私のMavenリポジトリ用のnginxを持っています。基本認証付きsbt依存関係リゾルバ

私build.sbtがあります:SBTは基本認証を使用しないため

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

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

しかし、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のログは次のようになります。基本認証では、アーティファクトへのアクセスを制限する必要があります。

どのように私はアクセスを制限し、sbtのリポジトリで作業することができますか?

+2

私はあなたを助けるかもしれない[このディスカッション](http://comments.gmane.org/gmane.comp.lang.scala.simple-build-tool/4055)を見つけましたが、IMOではありません解決策を再現するのに十分な詳細が含まれているので、誰かがそれを掘り下げて詳細な回答を提供すれば、すばらしいことになります。 –

+0

どのような詳細が欠落しているかを詳しく説明できますか?そのスレッドのHaraldからの返事は私にとってはまっすぐなようです。 sebastienからの返信は、システムの適切な 'javax.net.debug = all'を使用して認証領域を見つけることを示唆しています。 –

答えて

18

何あなたの〜/ .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"(、私は誤解されるかもしれないが、「ホスト」はホストヘッダーと一致する必要があり、私.e。rep.com:8080、rep.comだけでなく)。

HTH

+0

.credentialsファイルを入れる必要はありません。私はそれを問題にしていなかった。 – jsuereth

+1

このアプローチがSBTドキュメントに追加されました。 http://www.scala-sbt.org/0.13/docs/Publishinghtml – Brett

+0

grep式で期待される使用例が使用されていません: curl http://rep.com:8080 -vv 2>&1 |ホスト:nexus.eu - > WWW-Authenticate:BASIC realm = "Sonatype Nexus Repository Manager"は、次のような2行の結果を期待しています:egrep -i "realm | host" – Sylvain

-1

それが動作するかどうかを知っているが、ちょうどURLでベーシック認証を追加しようとしないでください:

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

私は以前に試してみましたが、java.net.MalformedURLExceptionを受けました。 –

+0

申し訳ありませんが、試してみる価値がありました。 –

1

私は基本的なAUTHを使用してSVNリポジトリと同じ問題を抱えていました。 この投稿と上記を暗示したものが、私に以下に要約した答えを与えました。

そのすべてのレルムが正しい得ることについて、上記で触れたように:build.sbtで

次のように私は私のリゾルバを設定します。

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

資格のための最初のパラメータであるレルム値を見つけるには.add、私は

curl http://<svn host> -v 

を行なったし、WWW-Authenticateヘッダで報告基本レルム値を使用:

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

希望します。

関連する問題