gpt4 book ai didi

javascript - 使用来自客户端应用程序的 Doorkeeper 进行身份验证而不传输 secret

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:35:29 26 4
gpt4 key购买 nike

我正在尝试在 Ruby on Rails API 应用程序中使用 Doorkeeper 进行身份验证。我想从客户端 AngularJS 应用程序获取访问 token 。目前,这涉及到/oauth/authorize 的 GET 请求,它会给我一个代码,然后我将该代码连同 client_id 和一个密码一起发布到/oauth/token。我不想从我的客户端应用程序发送客户端 ID 和密码,因为它们以纯文本形式存储在 JavaScript 文件中。我想关注this flow其中 response_typetoken,而不是 code,但我不知道如何用 Doorkeeper 做到这一点。 Their wiki所有示例似乎都涉及将客户端 ID 和密码发布到/oauth/token。

Doorkeeper 是否适合这个?我如何从客户端应用程序执行 Google OAuth2,其中没有 secret 从客户端传递到服务器?

编辑: 看起来我想要的是隐式授权,Doorkeeper supports .现在我只需要找出如何在我的 Rails 应用程序中执行此操作...

最佳答案

无需额外的服务器端配置。

当我在我的 Rails 应用程序中创建一个新的 Doorkeeper::Application 时,Doorkeeper 界面为我提供了一个授权链接,其中包含该应用程序的 response_type=code

我将其更改为 response_type=token,当我对其发出 GET 请求时,它会立即使用 access_token 而不是 code 进行响应。授权 URL 类似于 http://my-rails-doorkeeper-app/oauth/authorize?client_id=1234&redirect_uri=http://my-angularjs-app&response_type=token

更新:

这仅适用于我们还允许对授权流进行隐式授权的情况。默认情况下,doorkeeper 将允许其四种流(隐式授予、授权授予、密码和 client_credentials)。

如果您不想让它发生,您可以在 initializer/doorkeeper.rb 中配置它,因为有时它可能很危险。

关于javascript - 使用来自客户端应用程序的 Doorkeeper 进行身份验证而不传输 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19597746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com