我正在使用Azure移动应用后端(nodeJS),正如here所述。我一直在使用默认的Web设置配置来开发我的移动应用程序,但现在我想自定义云后端功能,因此我使用Azure-Mobile-Apps SDK创建了一个本地后端。
我使用移动应用程序登录(使用Azure客户端SDK的授权方面),然后捕获了AuthToken。
然后,我构建了一个Postman HTTP POST请求,其中包含以下标题:
ZUMO-API-VERSION = 2.0.0
x-zumo-auth = eyJ0eX000000000000000000000000000000.eyJ000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000000000-000000000_00000_00000
注意:我的令牌实际上没有所有这些零,它看起来像一个有效的令牌。
但是,POST请求的响应是:
{ “name”:“JsonWebTokenError”, “消息”:“无效签名” }
我认为这可能是因为Auth令牌是由不同的Service(默认后端而不是我在localhost上运行的项目)生成的。所以我用localhost初始化了一个客户端并尝试使用它进行身份验证,但我得到了:
JS:登录错误!错误:未启用使用所选身份验证提供程序登录 chromium:[INFO:CONSOLE(12)]“不允许加载本地资源:file:///android_asset/webkit/android-weberror.png”,来源:data:text / html,chromewebdata(12)
我从https://myApp.scm.azurewebsites.net/Env.cshtml
找到了我的WEBSITE_AUTH_SIGNING_KEY,并将其添加到我的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' },
};
文件位于同一目录中。它看起来像这样:
//div[text()='hello']
但是,我仍然得到相同的结果。有没有办法告诉我的azureMobile文件是否被正确引用,或者是否有其他错误?
答案 0 :(得分: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文件中,从部署中排除此文件。