2017-08-18 98 views
0

我已經配置rabbitmq-auth-backend-http和我rabbitmq.config看起來像下面兔MQ後端HTTP授權不工作

[ 
    {rabbit, [{auth_backends, [rabbit_auth_backend_http, rabbit_auth_backend_internal]}]}, 
    {rabbitmq_auth_backend_http, 
    [{http_method, get}, 
    {user_path,  "http://localhost:8080/auth/user"}, 
    {vhost_path, "http://localhost:8080/auth/vhost"}, 
    {resource_path, "http://localhost:8080/auth/resource"}, 
    {topic_path, "http://localhost:8080/auth/topic"}]} 
]. 

授權終點http://localhost:8080/auth啓動和運行。

但是,當我試圖登錄http://localhost:15672/api/whoami API是越來越失敗,狀態碼500

認證與RabbitMQ的內部數據庫工作正常。加入rabbit_auth_backend_httpauth_backends不工作時,唯一的問題是。它甚至沒有達到授權終點。我在var/rabbitmq/[email protected], 但沒有幫助檢查日誌。我在這裏張貼日誌

=錯誤報告==== 18月 - 2017年21 :: 55:46 === 牧場聽衆rabbit_web_dispatch_sup_15672了連接過程開始cowboy_protocol:在< START_LINK/4 0.574.0>使用原因退出:{[{原因,是undef},{MFA,{rabbit_mgmt_wm_whoami,is_authorized,2}},{堆棧跟蹤,[{rabbit_auth_backend_http,user_login_authentication,[< < 「測試」 >>,[{密碼, < < 「測試」 >>}]],[]},{rabbit_access_control,try_authenticate,3,[{文件, 「SRC/rabbit_access_control.erl」},{線,88}]},{rabbit_access_control,' - check_user_login/2-樂趣0 - 」,4,[{文件, 「SRC/rabbit_access_control.erl」},{線,74}]},{列表,與foldl,3,[{文件, 「lists.erl」},{線,1263}]},{rabbit_mgmt_util,is_authorized, 6,[{文件, 「SRC/rabbit_mgmt_util.erl」},{線,149}]},{cowboy_rest,呼叫,3,[{文件, 「SRC/cowboy_rest.erl」},{線,976}]} {cowboy_rest,is_authorized,2,[{文件, 「SRC/cowboy_rest.erl」},{線,150}]},{cowboy_protocol,執行,如圖4所示,[{文件, 「SRC/cowboy_protocol.erl」},{ line,442}]}]},{req,[{socket,#Port < 0.26006>},{transport,ranch_tcp},{connection,keepalive},{pid,< 0.574.0>},{method,< < 「GET」>>},{version,'HTTP/1.1'},{peer,{{127,0,0,1},51220}},{host,< <「localhost」>>},{host_info, {qs_vals,[]},{bindings,[]},{port,15672},{path,< <「/ api/whoami」>>},{path_info,undefined},{qs,< < >>} ]},{header,[{< <「host」>>,< <「localhost:15672」>>},{< < 「連接」 >>,< < 「保活」 >>},{< < 「授權」 >>,< < 「基本dGVzdDp0ZXN0」 >>},{< < 「用戶代理」 >>,< < 「Mozilla/5.0(Macintosh;英特爾Mac OS X 10_12_6)AppleWebKit/537.36(KHTML,如Gecko)Chrome/60.0.3112.90 Safari/537.36「>>},{< <」content-type「>>,< <」application/json「>>}, {< < 「接受」 >>,< < 「/ 」>>},{< < 「引薦」 >>,< <「 http://localhost:15672/」 >>},{< < 「接受編碼」 >>,< <「gzip,deflate,br」>>},{< <「accept-language」>>,< <「en-US,en; q = 0。8「>>}},[{<」connection「>>,[< <」keep-alive「>>]}]},{cookies,undefined},{meta,[]},{body_state,waiting}, {buffer,< < >>},{multipart,undefined},{resp_compress,true},{resp_state,waiting},{resp_headers,[{< <「vary」>>,< <「origin」>>}]}} ,{{cowboy_rest,error_terminate,5,[{file,「src/cowboy_rest,{context,undefined,none,undefined}},[{cowboy_rest,error_terminate,5,{{file,」src/cowboy_rest,{ .erl 「},{線,1009}]},{cowboy_rest,is_authorized,2,[{文件,」 SRC/cowboy_rest.erl「},{線,150}]},{cowboy_protocol,執行,4,[{ file,「src/cowboy_protocol.erl」},{line,442}]}]}

我做錯了什麼?

感謝您的任何幫助。

回答

0

發佈此問題後rabbitmq-user谷歌組我得到了解決方案。您需要手動安裝rabbitmq-auth-backend-http。 在rabbitmq.config文件中添加配置將不會安裝它。

這裏是更多的鏈接detailed answer

關於rabbitmq-auth-backend-http插件的另一個重要的事情是您必須在rabbitmq.config文件中配置所有端點(user_path,vhost_path,topic_path,resource_path)。如果錯過任何端點rabbitmq將低於default values授權。

{user_path,  "http://localhost:8000/auth/user"}, 
{vhost_path, "http://localhost:8000/auth/vhost"}, 
{resource_path, "http://localhost:8000/auth/resource"}, 
{topic_path, "http://localhost:8000/auth/topic"}