【问题标题】:Accessing APIs / Data in Laravel Passport from a Front-end Client从前端客户端访问 Laravel Passport 中的 API / 数据
【发布时间】:2019-12-27 06:07:51
【问题描述】:

我正在创建一个小众社区网站+论坛,用户可以在其中注册、登录、创建帖子并互相关注。

我的技术堆栈由 Laravel 中的后端 API(使用 Laravel 护照)和 Vue.js / Nuxt 中的前端组成。

我可以通过 Postman 访问所有 API,在此我调用 http://localhost:8000/oauth/token 来请求令牌 https://laravel.com/docs/master/passport#requesting-password-grant-tokens 然后随后,我使用提供的 access_token / Bearer 令牌调用 API,例如 http://127.0.0.1:8000/api/v1/tags

我的问题是,我是否需要一个完整的 oauth 流程——我的前端将无限期地需要访问 Laravel 中的后端 API/数据,但是客户端如何在不通过 2-way 的情况下访问数据与每个用户会话握手,这似乎有点矫枉过正? 我需要Password Grant TokenImplicit Grant TokenPersonal Access Token 还是别的什么? 如何将我的前端 javascript 客户端“列入白名单”,同时在一定程度上保护我的数据免遭恶意使用?另外,如何使用 Passport 对不同类型的 API 请求进行身份验证?

密码授予令牌是否适用于所有这些......我在 API 中有 3 大类可用的数据:

  1. 类型 1:完全开放,无身份验证,不绑定到用户:示例:

GET /api/tags - API that gets all tags, this should not require authentication + authorization. This API would be used to display all tags on the /tags page, for example.

  1. 类型 2:仅限管理员的端点:完全关闭,任何人都无法使用,但对我(管理员)而言。示例:
POST / PATCH / DELETE /api/tags - APIs that create / update / delete (global) tags, these should only be accessible by me (Admin)
GET /api/users - should only be accessible by me (Admin)
  1. 类型 3:用户特定端点,仅对登录用户可用(当然还有管理员)。示例:

POST / PATCH / DELETE /api/user/1/settings - APIs that create / update / delete (user-specific) data, these should only be accessible by a logged-in user, and by me (Admin).

密码授予令牌是否适用于所有这些?

【问题讨论】:

    标签: php laravel laravel-5 access-token


    【解决方案1】:

    隐式授权通常是 API 驱动/SPA 的最佳方法。

    由于 SPA 是公共客户端,它无法安全地存储诸如客户端密码之类的信息。使用隐式流程通过返回令牌来简化身份验证,而无需引入任何不必要的额外步骤。

    您提供给隐式流的 Laravel Passport 链接也详细描述了这种类型的流最适合用于 javascript 前端应用程序:https://laravel.com/docs/5.8/passport#implicit-grant-tokens

    希望这会有所帮助!

    【讨论】:

    • 我不确定这里的隐式授权令牌是否正确,因为它不会阻止用户 A(恶意)更改用户 B 的数据。我还在上面的问题中添加了更多细节。我需要不同级别的访问权限...请告诉我您的想法。
    猜你喜欢
    • 2017-05-31
    • 1970-01-01
    • 2019-07-21
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-31
    • 1970-01-01
    相关资源
    最近更新 更多