2014-07-20 92 views
2

我剛剛在Apache 2.4配置中通過以下指令設置nexus 2.8.1和一個反向代理。Nexus sonatype apache 2.4代理不允許管理員登錄

<Location /nexus> 
    RequestHeader unset Authorization 
    ProxyPreserveHost On 
    ProxyPass http://nexushost.server:8082/nexus 
    ProxyPassReverse http://nexushost.server:8082/nexus 
    RequestHeader set X-Forwarded-Proto "https" 
</Location> 

但是,每當我嘗試登錄它總是失敗,無效的用戶名/密碼或訪問未啓用ui。

如果我通過直接進入http://nexushost.server:8080/nexus頁面來嘗試相同的訪問,那麼我沒有任何使用相同憑據登錄的問題。

有沒有其他人遇到類似的問題。

回答

0

我相信你的問題來自於這個指令:

RequestHeader unset Authorization 

我想你這樣做,因爲你正在使用基本身份驗證在你的Apache和你不想授權頭對的Nexus漂移。不幸的是,Nexus使用相同的頭來執行身份驗證(您可以通過打開瀏覽器的網絡分析器來驗證這一點)。

我想出了以下策略:

  1. 你在Apache中執行基本的身份驗證和禁用的Nexus權威性,通過給匿名所有例如權利。出於明顯的安全原因,您必須確保Nexus綁定到127.0.0.1而不是0.0.0.0。

  2. 您在Apache中禁用基本身份驗證(當然還有刪除上述指令),並讓Nexus執行身份驗證。

  3. 將您的Apache用戶/密碼映射到Nexus的用戶/密碼。你需要刪除上面的指令讓授權頭傳播到Nexus。這爲您提供了在未經驗證的用戶身上完全不顯示Nexus的優勢,同時保留了Nexus的正確管理。唯一的缺點是你需要在兩個地方管理密碼。

  4. 與3相同,但要解決密碼管理開銷問題,您在nexus中爲所有用戶設置了相同的密碼(例如'nexus_password'),然後您使用此密碼重寫授權標頭。下面是做它的Apache配置的一個例子:

    RewriteEngine On 
    RewriteMap base64map prg:/usr/bin/b64 
    
    <Location /> 
        RewriteCond %{REMOTE_USER} (.*) 
        RewriteRule .* - [E=R_U:${base64map:%1:nexus_password}] 
        RequestHeader set Authorization "Basic %{R_U}e" 
    </Location> 
    

    隨着/usr/bin/b64纏繞base64

    #!/bin/bash 
    # MANAGED BY PUPPET 
    # This is an apache RewriteMap interface for base64 : apache runs this program only once at startup 
    # See http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritemap 
    while read line; do 
        echo -n $line | /usr/bin/base64 
    done;  
    

    同1,確保Nexus是必然爲localhost。

+0

是的,我在Apache上添加了基本身份驗證,因爲它是一個公共服務器,我不希望Nexus執行身份驗證。我切換到使用nginx並且它工作正常,但我認爲你是對的。 – thedoctor

+0

很酷,那麼你可以接受我的回答;) –

1

您必須映射要通過的cookie以及其他一些事情。查看Nexus書籍中的文檔。

http://books.sonatype.com/nexus-book/reference/install-sect-proxy.html

具體的餅乾所需的UI在瀏覽器中運行。

+0

這本書說要映射cookie「如果你想在不同於其配置的上下文路徑上爲Nexus提供服務」,情況並非如此。但爲鏈接+1。 –

+0

你必須映射餅乾,因爲你正在改變協議。我已經更新了書籍文檔,並將很快推出。 –

+0

除非您設置了secure-only-flag或http-only-flag,否則cookie與協議無關。請參閱http://tools.ietf.org/html/rfc6265#section-4.1.1 –