【问题标题】:How to implement custom authentication with hasura?如何使用 hasura 实现自定义身份验证?
【发布时间】:2020-07-16 18:03:55
【问题描述】:

我正在开发一个送餐网络应用程序。所以会有两种类型的用户,1.客户。 2. 供应商。我可以在 hasura 控制台中为两个用户设置表的自定义权限。 现在如何实现身份验证设置,用户可以使用这两个不同的角色注册/登录两个网站。 在 auth0 或 firebase 中,我们无法拥有该功能。所以自定义身份验证服务器是唯一的选择。 所以我的问题是 - 如何运行我们在 auth0 中运行的 jwt 脚本来传递这些季节变量。?

function (user, context, callback) {
const namespace = "https://hasura.io/jwt/claims";
context.idToken[namespace] = 
{ 
  'x-hasura-default-role': 'user',
  // do some custom logic to decide allowed roles
  'x-hasura-allowed-roles': ['user'],
  'x-hasura-user-id': user.user_id
};
callback(null, user, context);
}

我是否需要将此身份验证服务编写为自定义解析器并将其添加为远程架构? 如何在解析器中运行数据库操作?

【问题讨论】:

    标签: node.js graphql hasura


    【解决方案1】:

    我可以将此身份验证服务器实现为远程架构还是需要运行单独的节点服务器?

    是的,您可以将 auth-server 实现为远程模式!您只需要确保“匿名”角色可以访问您的远程架构,绕过适用于其余经过身份验证的 gql 端点的 JWT 模式。

    对于远程 GraphQL 服务器的查询,有时可能需要绕过 Hasura 的授权系统(调用配置的 webhook 或验证 JWT)。 例如,您有一个执行身份验证(即注册和登录)的远程 GraphQL 服务器,并且您已将其添加为远程模式。在这种情况下,您不希望在用户发出登录/注册请求时执行 Hasura 的授权。

    相关文档:https://hasura.io/docs/1.0/graphql/core/remote-schemas/schema-auth.html#bypassing-hasura-s-authorization-system-for-remote-schema-requests

    还有:https://hasura.io/docs/1.0/graphql/manual/auth/authentication/unauthenticated-access.html


    如果实现您自己的身份验证服务器,这里有两个选项或“模式”(Webhooks 或 JWT):https://hasura.io/docs/1.0/graphql/manual/auth/authentication/index.html。这些图表非常有用!

    设置选项之一后,Hasura 将自动验证您的请求(在任何查询或突变运行之前)。您无需编写自定义解析器并将其添加为远程架构。

    Hasura 可以在运行 GraphQL 引擎时配置环境变量(HASURA_GRAPHQL_AUTH_HOOKHASURA_GRAPHQL_AUTH_HOOK_MODEHASURA_GRAPHQL_JWT_SECRET)或标志(--auth-hook--jwt-secret),并且根据您的选择,您必须适合文档中详细说明的规范(身份验证服务器应如何响应或配置令牌)。

    【讨论】:

    • 我的问题是,我可以将此身份验证服务器实现为远程模式还是需要运行单独的节点服务器?
    • @SujoySaha 在上面更新,简短的回答:是的,你可以!不需要单独的服务器。
    猜你喜欢
    • 2020-11-23
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多