【问题标题】:How to prevent exposing client secret when using laravel passport?使用laravel护照时如何防止暴露客户秘密?
【发布时间】:2021-06-01 03:15:18
【问题描述】:

我正在尝试实施 laravel 的通行证来保护我的 api 路由,并且我遇到了一个情况,即除非授权应用程序调用该路由,否则该路由应该是不可访问的。我正在尝试使用Client Credentials Grant Tokens 并使用邮递员我能够生成访问令牌,然后我可以将其用于访问授权。

问题是 - 我不明白如何安全地将其与 Vueaxios 一起使用。我有我的组件,我需要在其中调用这个 api,我当然可以设置一个包含所有必要字段(client_idclient_secretgrant_type)的表单主体,但这意味着任何人都可以打开 chrome开发工具并在源代码中搜索client_secret,他们将获得硬编码的客户端密码,这将授予他们对api的访问权限。这样做的正确方法是什么?

【问题讨论】:

    标签: laravel api access-token laravel-passport


    【解决方案1】:

    这取决于你如何使用你的 Vue 前端。

    如果它主要是您自己网站的前端,但有时需要访问外部 API,那么您应该让后端进行 API 调用并在那里存储机密。

    如果您正在开发专用于外部 API 的 Vue 前端,但在不同的域上运行,您可以选择 PKCE 选项:https://laravel.com/docs/8.x/passport#code-grant-pkce

    如果你的前端与 API 在同一个域中,请使用 Laravel 护照提供的 CreateFreshApiToken 选项。

    【讨论】:

    • 是的,CreateFreshApiToken 听起来像是完美的解决方案,因为它是同一个网页,而不是外部 api。我已经按照文档中提供的步骤(实际上只是提供的一个步骤),但它似乎不起作用,据我了解,在我将它添加到中间件后它应该可以直接工作,但我确实得到了 401回复。此外,这似乎会影响我所有的路线,但事实上,我希望其中一些需要身份验证。我如何才能将此中间件仅应用于某些路由?
    • 我不太明白这应该如何工作,这是否仍然意味着需要经过身份验证的用户登录?因为我想要实现的只是让这条路线可以在 Vue 中使用,但不受外部限制
    • 看错问题会翻看,看能不能调整:)
    猜你喜欢
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2023-01-25
    • 2014-12-21
    • 1970-01-01
    • 2023-01-26
    • 2014-09-01
    相关资源
    最近更新 更多