【问题标题】:Passport JWt Authetication for hyperledger composer API用于超级账本作曲家 API 的 Passport JWt 身份验证
【发布时间】:2019-03-02 15:06:50
【问题描述】:

call back for access token我正在寻找一种解决方案来为 hyperledger composer REST API 实现护照 jwt 身份验证策略。我已按照此链接设置护照身份验证https://www.codementor.io/gangachris125/passport-jwt-authentication-for-hyperledger-composer-rest-server-jqfgkoljn。

生成超级账本作曲家 API,创建作曲家休息服务器 docker 容器,API 受到保护,除了访问令牌生成、如何检索该令牌之外,一切似乎都正常工作。

我还创建了另一个带有护照 jwt 的 nodejs 应用程序,mongodb 添加了几个用户。我能够从该应用程序成功生成令牌并使用该令牌保护任何快速路由。

但我的挣扎点是如何为作曲家休息服务器 API 生成令牌

正如许多文章中解释的那样,我创建了自定义 jwt ,环境变量如下

自定义 jwt

const passportJwt = require('passport-jwt');
const util = require('util');

function CustomJwtStrategy(options, verify) {
  options.jwtFromRequest = passportJwt.ExtractJwt.fromAuthHeaderAsBearerToken();
  passportJwt.Strategy.call(this, options, verify);
}

util.inherits(CustomJwtStrategy, passportJwt.Strategy);

module.exports = {
  Strategy: CustomJwtStrategy
};

环境变量

COMPOSER_CARD=admin@tutorial-network
COMPOSER_NAMESPACES=never
COMPOSER_AUTHENTICATION=true
COMPOSER_MULTIUSER=true
COMPOSER_PROVIDERS='{
  "jwt": {
    "provider": "jwt",
    "module": "/home/composer/node_modules/custom-jwt.js",
    "secretOrKey": "admin",
    "authScheme": "saml",
    "successRedirect": "/",
    "failureRedirect":"/"
    }
}'
COMPOSER_DATASOURCES='{
  "db": {
    "name": "auth",
    "connector": "mongodb",
    "host": "mongo"
  }
}'

composer rest server logs on startup

现在我应该从哪里生成令牌,如何检索该令牌,以便我可以捕获它并将其传递到超级账本作曲家业务 API 的标头中。

请帮助提供详细信息。

【问题讨论】:

    标签: mongodb hyperledger-composer passport-jwt


    【解决方案1】:

    可以使用node js生成的token。您需要注意的一件事是您必须在此处使用相同的 "secretOrKey": "admin" customkey 来在节点 js 中生成令牌

    在您使用 options.jwtFromRequest =passportJwt.ExtractJwt.fromAuthHeaderAsBearerToken(); 时发出如图所示的请求。它将 access_token 存储在 cookie 中。然后您可以从 cookie 中检索它以供进一步使用。

    【讨论】:

    • 嗨@honey shah,感谢您的回复。我正在使用与护照策略令牌生成应用程序中使用的相同的 secretOrKey。我已经生成了 jwt 令牌并尝试调用 localhost:3000/auth/jwt/callback?token= ,但我得到了 200 响应的 html 源代码,如下所示
    • 嗨@honey shah,感谢您的回复。我正在使用与护照策略令牌生成应用程序中使用的相同的 secretOrKey。我已经生成了 jwt 令牌并尝试调用 localhost:3000/auth/jwt/callback?token= ,但我收到了 200 条带有 html 源的响应。看不到访问令牌。还有一点我想提到的是我正在使用 opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt');在生成令牌的nodejs应用程序中,但在custome jwt文件中我们提到了passportJwt.ExtractJwt.fromAuthHeaderAsBearerToken();。会不会是个问题
    • 是的@honey shah
    • 尝试运行原生邮递员而不是chrome扩展然后看看。
    • 我现在试过了,结果一样,HTML源响应有200个状态码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2019-03-28
    • 2022-11-10
    • 2018-12-19
    相关资源
    最近更新 更多