node.js - 本地测试 Azure 移动身份验证 - jwt 签名无效

标签 node.js azure authentication azure-mobile-services jwt

我正在使用 Azure 移动应用程序后端 (nodeJS),如所讨论的 here 。我一直使用默认的 Web 设置配置来开发我的移动应用程序,但现在我想自定义云后端功能,因此我使用 Azure-Mobile-Apps SDK 创建了一个本地后端。 。

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

然后,我构建了一个 Postman HTTP POST 请求,其中包含以下 header :

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

注意:我的 token 实际上并没有所有这些零,它看起来像一个有效的 token 。

但是,POST 请求的响应是:

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

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

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)

更新:

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

最佳答案

要在本地验证托管服务创建的 JWT token ,您需要获取所使用的签名 key 。您可以通过打开浏览器访问 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 文件来从部署中排除此文件。

关于node.js - 本地测试 Azure 移动身份验证 - jwt 签名无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37864189/

相关文章:

node.js - 在 Express 和 node.js 的路由设置中使用 dynamicHelpers

javascript - 如何获取从 promise 返回的值并在其他文件中使用它?

Azure 专用 DNS 服务器不包含专用终结点的 CName 记录

c# - ASP.NET Core MVC Google Auth 注销问题

postgresql - Postgres : authentication fails when try to login with different unix user

PHP API 身份验证和 session

node.js - 使用 "TypeError: Key must be a buffer"删除对象时获取 "ibm-cos-sdk"

Node.js 服务器不可见

c# - 如何在 Azure 函数中调试 FileLoadException

azure - 是否可以通过其 API 使用 Azure AD B2C 身份验证?