【问题标题】:Authorizing API Requests to 3rd Party Services in Mongodb Realm向 Mongodb 领域中的 3rd 方服务授权 API 请求
【发布时间】:2021-05-12 13:56:17
【问题描述】:

我正在构建一个 React 应用程序,它允许用户使用 Google 登录,然后连接到 Realm 中的 webhook/3rd 方服务。服务应该只返回用户拥有的数据。

我已经使用 Google 设置了 OAuth 2,并且可以为用户取回 access_token,然后我将其在标头中(我也尝试过 URL 参数)传递给 webhook。但我收到一条错误消息:

400“未指定身份验证方法”-“无效参数”。

经过大量测试,我确定这一定是 Realm 问题 - 但我不知道是什么问题。

我尝试在 Postman 中使用 Google 进行身份验证,并从那里发送请求,如下所示:

    GET <incoming_webhook URL>
    Request Headers
    Authorization: Bearer <access_token>
    User-Agent: PostmanRuntime/7.26.10
    Accept: */*
    Host: us-east-1.aws.webhooks.mongodb-realm.com
    Accept-Encoding: gzip, deflate, br
    Connection: keep-alive

但我得到了同样的错误。

在 Realm 中,我启用了“Google”作为身份验证提供程序(身份验证工作只是不是通过 webhook 进行的授权)。

【问题讨论】:

    标签: authorization realm mongodb-realm


    【解决方案1】:

    根据https://docs.mongodb.com/realm/services/configure/service-webhooks/#configure-user-authentication,您可以选择电子邮件/密码、API 密钥或自定义 JWT 令牌。我不知道您是否可以直接使用 google 登录到 webhook,但您最好创建一个领域函数。


    关于错误no authentication methods were specified,您可以通过以下任一方式指定身份验证方法的类型(以自定义JWT为例):

    • 把它放在标题中:

    标题:jwtTokenString,值:eyJhbGci.....

    • 将其作为 webhook 主体的一部分:
    {
        "jwtTokenString":"eyJhbGci...",
        "mydata": "my data value"
    }
    
    

    如果您尝试同时使用这两种方法,则会收到multiple authentication methods used 错误。标头中的 HTTP Bearer 令牌等在这里没有用处。

    对于 API 密钥,使用 api-key 代替 jwtTokenString;或email`password` 用于电子邮件\密码身份验证。

    我发现这些提供身份验证信息的方法非常不直观,文档也很不清楚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 2022-11-29
      • 2021-12-19
      • 2020-03-13
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      相关资源
      最近更新 更多