本地testingAzure Mobile Auth – 无效的jwt签名

我正在玩一个Azure移动应用程序后端(nodeJS),正如这里所讨论的。 我一直在使用默认的网页设置configuration开发我的移动应用程序,但是现在我想定制云端后端function,所以我已经使用Azure-Mobile-Apps SDK创build了一个本地后端。

我使用我的移动应用程序(使用Azure客户端SDK的授权方面)login,然后捕获AuthToken。

然后我构造了一个邮递员HTTP POST请求,这些标题:

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

注意:我的tokenm实际上并不包含所有这些零,它看起来像一个有效的标记。

但是,POST请求的响应是:

{“name”:“JsonWebTokenError”,“message”:“无效签名”}

我以为这可能是因为身份validation令牌是由不同的服务(默认后端,而不是我的项目在本地主机上运行)生成的。 于是我用localhost初始化了一个客户端,并试图用它进行身份validation,但是我得到了:

JS:错误login! 错误:未使用所选身份validation提供程序login铬:[INFO:CONSOLE(12)]“不允许加载本地资源:file:///android_asset/webkit/android-weberror.png”,source:data: text / html,chromewebdata(12)

更新:

我从https://myApp.scm.azurewebsites.net/Env.cshtmlfind了我的WEBSITE_AUTH_SIGNING_KEY,并将其添加到我的azureMobile.js file ,该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文件是否被正确引用,或者是否有其他的错误?

要validation由托pipe服务创build的本地JWT令牌,您需要获取使用的签名密钥。 您可以通过打开浏览器https://mobile-service-name.scm.azurewebsites.net/Env.cshtml并findWEBSITE_AUTH_SIGNING_KEY的值来获得此信息。 通过创build(或更新)名为azureMobile.js的项目的根目录中的文件,并使用以下内容获取此值并configuration本地服务器:

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

build议通过将azureMobile.js添加到.gitignore文件中,从部署中排除此文件。