2015-10-15 46 views
0

Dropbox要求回調URL通過HTTPS(不使用本地主機時)。使用https

使用Mule 3.6.0與最新的Dropbox連接器,回調默認爲http - 因此只與localhost一起使用。對於製作,我需要使用https進行OAuth舞蹈。

指定https回叫URL的正確方法是什麼?

我已經試過:

<https:connector name="connector.http.mule.default"> 
    <https:tls-key-store path="${ssl.certfile}" keyPassword="${ssl.keyPass}" storePassword="${ssl.storePass}"/> 
    </https:connector> 

    <dropbox:config name="Dropbox" appKey="${dropbox.appKey}" appSecret="${dropbox.appSecret}" doc:name="Dropbox"> 
    <dropbox:oauth-callback-config domain="production.mydomain.com" path="callback" /> 
    </dropbox:config> 

但它的錯誤:

Endpoint scheme must be compatible with the connector scheme. Connector is: "https", endpoint is "http://production.mydomain.com:8052/callback" 

回答

0

這裏是我結束了該解決的問題:

<https:connector name="connector.http.mule.default" doc:name="HTTP-HTTPS"> 
    <https:tls-key-store path="${ssl.certfile}" keyPassword="${ssl.keyPass}" storePassword="${ssl.storePass}"/> 
</https:connector> 

<dropbox:config name="Dropbox" appKey="${dropbox.appKey}" appSecret="${dropbox.appSecret}" doc:name="Dropbox"> 
    <dropbox:oauth-callback-config domain="myserver.domain.com" path="callback" connector-ref="connector.http.mule.default" localPort="8052" remotePort="8052"/> 
</dropbox:config> 

該本地主機的偉大工程,但不是如果你需要回調到本地主機以外的東西(例如myserver.domain.com)

查看mule.log你可以看到,連接器結合到本地主機(127.0.0.0)儘管配置指向:

domain="myserver.domain.com" 

日誌條目:

INFO ... Attempting to register service with name: Mule.Ops:type=Endpoint,service="DynamicFlow-https://localhost:8052/callback",connector=connector.http.mule.default,name="endpoint.https.localhost.8052.callback" 
INFO ... Registered Endpoint Service with name: Mule.Ops:type=Endpoint,service="DynamicFlow-https://localhost:8052/callback",connector=connector.http.mule.default,name="endpoint.https.localhost.8052.callback" 
INFO ... Registered Connector Service with name Mule.Ops:type=Connector,name="connector.http.mule.default.1" 

的解決方法是給力Mule聽取定義localhost作爲端點的連接器的0.0.0.0。

在wrapper.conf設置

wrapper.java.additional.x=-Dmule.tcp.bindlocalhosttoalllocalinterfaces=TRUE