我正在创建一个利基社区网站+论坛,用户可以在其中注册,登录,创建帖子并互相关注。
我的技术堆栈由Laravel(使用Laravel护照)中的后端API和Vue.js / Nuxt中的前端组成。
我可以通过邮递员访问所有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次访问的情况下访问数据与每个用户会话进行握手,这似乎有些过分? 我是否需要Password Grant Token,Implicit Grant Token,Personal Access Token等其他内容? 如何在将前端javascript客户端列入“白名单”的同时,还可以保护我的数据免遭滥用?另外,如何使用Passport对不同类型的API请求进行身份验证?
Password Grant令牌是否适合所有这些。...我在API中提供3种广泛的数据类别:
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.
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)
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).
密码授予令牌是否适合所有这些?
答案 0 :(得分:0)
隐式授予通常是API驱动/ SPA的最佳方法。
由于SPA是公共客户端,因此它无法安全地存储诸如“客户端密钥”之类的信息。使用隐式流可以通过返回令牌来简化身份验证,而无需引入任何不必要的附加步骤。
您提供给隐式流的Laravel Passport链接也进行了详细描述,该流类型最适合在JavaScript前端应用中使用:https://laravel.com/docs/5.8/passport#implicit-grant-tokens
希望这会有所帮助!