【问题标题】:Authorization of rest api using OAuth2.0使用OAuth2.0授权rest api
【发布时间】:2018-07-30 02:53:22
【问题描述】:

我正在使用 node js 和 express js 开发一个 REST API。 比如我的 RESTful API 端点如下

/api/v1/books/:id
/api/v1/books

我只想为特定应用程序(web、android 或 ios)授权端点。

**应用程序的用户可能会或可能不会在应用程序中进行身份验证。

ex: www.bookstore.com
bookstore android/ios app

即。只有这些应用程序可以访问这些端点。 如何使用 OAuth 2.0 和 JWT 实现这一点

例如,我们可以在不提供登录凭据的情况下查看 amazon(web/android/ios) 中的每个项目。

如何实现。

【问题讨论】:

    标签: node.js express oauth-2.0 authorization jwt


    【解决方案1】:

    Jwt 和 Oauth 用于用户认证和授权。在这里,我相信您只希望特定客户端可以访问您的 API。为此,您可以使用 npm 注册表上提供的 joi 验证器。 npm 安装 joi。 现在为您的应用类型提供架构并使其成为必需。

    【讨论】:

    • 不是特定的客户。所有使用我的应用程序的客户端只能访问我的后端 API。 JOI 用于输入验证。
    • 是的,这就是我所说的特定客户端的意思。您的前端可以将应用程序类型和版本发送到服务器,您可以在其中使用 JOI 进行验证。否则,您可以使用 access-control-allow-origin 标头只允许一个域访问您的后端。这与 Oauth 没有任何关系(据我所知)。我建议你同时使用 CORS 和 JOI。
    【解决方案2】:

    您描述的流程是典型的“client credentials grant”:

    客户端凭据(或其他形式的客户端身份验证)可以
    当授权范围为
    时用作授权授予 仅限于受客户端控制的受保护资源,
    .... 客户端凭据用作授权授予
    通常当客户代表自己行事时(客户是
    也是资源所有者)
    ...

    在这个用例中,最终用户不需要登录,只需要客户端 ID,即您的应用程序。

    【讨论】:

      猜你喜欢
      • 2020-09-20
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      • 2019-01-16
      • 2019-07-05
      • 1970-01-01
      • 2012-06-28
      • 2018-06-29
      相关资源
      最近更新 更多