2016-06-16 48 views
1

我正在玩一個Azure移動應用程序後端(nodeJS),如討論here。我一直在使用默認的Web設置配置來開發我的移動應用程序,但現在我想定製雲後端功能,所以我創建了Azure移動應用程序SDK的本地後端。本地測試Azure移動認證 - 無效的jwt簽名

我使用我的移動應用程序(使用Azure客戶端SDK的授權方面)登錄,然後捕獲AuthToken。

我再構建一個郵差HTTP POST請求,這些標題:

ZUMO-API-VERSION = 2.0.0 
x-zumo-auth = eyJ0eX000000000000000000000000000000.eyJ000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000-000000000_00000_00000 

NB:我tokenm實際上並不擁有所有這些零,它看起來像一個有效的標記。

然而,POST請求的迴應是:

{ "name": "JsonWebTokenError", "message": "invalid signature" }

我想這可能是因爲由不同的服務(默認後端,而不是我的項目在本地主機上運行)產生的身份驗證令牌。所以我初始化客戶端採用本地主機,並試圖與進行身份驗證,但我得到:

JS: Error Logging in! Error: Logging in with the selected authentication provider is not enabled chromium: [INFO:CONSOLE(12)] "Not allowed to load local resource: file:///android_asset/webkit/android-weberror.png", source: data:text/html,chromewebdata (12)

更新:

我發現我的WEBSITE_AUTH_SIGNING_KEY從https://myApp.scm.azurewebsites.net/Env.cshtml並將其添加到我的azureMobile.js file,這是在同一目錄作爲我的app.js文件。它看起來像這樣:

console.log("Test"); 
module.exports = { 
    cors: { 
     origins: ['localhost'] 
    }, 
    data: { 
     provider: 'mssql', 
     server: '127.0.0.1', 
     database: 'mytestdatabase', 
     user: 'localDemo', 
     password: 'myPassword' 
    }, 
    logging: { 
     level: 'verbose' 
    }, 
    auth: { secret: 'xzy0000000000000000000000000000000000' }, 
}; 

但是,我仍然得到相同的結果。有沒有辦法告訴我的azureMobile文件是否被正確引用,或者是否有其他錯誤?

回答

4

要驗證由託管服務創建的本地JWT令牌,您需要獲取使用的簽名密鑰。您可以通過打開瀏覽器到https://mobile-service-name.scm.azurewebsites.net/Env.cshtml並找到WEBSITE_AUTH_SIGNING_KEY的值來獲得此信息。把這個值,並通過創建(或更新)一個在你的項目中有以下內容的根稱爲azureMobile.js文件來配置你的本地服務器:

module.exports = { 
    auth: { secret: 'value from WEBSITE_AUTH_SIGNING_KEY' } 
}; 

我們建議通過增加azureMobile排除在部署該文件。 js到您的.gitignore文件。

+0

謝謝!我已經完成了這一步,並找到了我的'WEBSITE_AUTH_SIGNING_KEY',並將其添加到我的'azureMobile.js'文件中,該文件位於與我的app.js文件相同的目錄中。但是,我仍然得到相同的結果。有沒有辦法告訴我的azureMobile文件是否被正確引用,或者是否有其他錯誤?任何其他的想法,我會很感激! –

+0

我意識到我在一兩次發佈前就打破了這個過程。在github上添加了一個問題,解釋並提供瞭解決方法 - https://github.com/Azure/azure-mobile-apps-node/issues/444。 –

+0

我擔心即使啓用了該屬性,我也會遇到問題。我的'azureMobile.js'文件沒有被識別(有沒有辦法檢查這個)或其他什麼是錯誤的,我是否需要設置任何auth提供者的簽名祕密?例如我使用的令牌是一個Facebook令牌,我需要指定「APPSETTING_WEBSITE_AUTH_FB_APP_ID」還是「APPSETTING_WEBSITE_AUTH_FB_APP_SECRET」? –