4

我正在尝试在 Ruby on Rails API 应用程序中使用 Doorkeeper 进行身份验证。从客户端 AngularJS 应用程序,我想获得一个访问令牌。目前,这涉及到 /oauth/authorize 的 GET 请求,它给了我一个代码,然后我将该代码连同一个 client_id 和一个秘密发布到 /oauth/token。我不想从我的客户端应用程序发送客户端 ID 和密码,因为它们以纯文本形式存储在 JavaScript 文件中。我想遵循这个流程where response_typeis token, not code,但我不知道如何使用 Doorkeeper 做到这一点。他们的 wiki示例似乎都涉及将客户端 ID 和机密发布到 /oauth/token。

Doorkeeper 是适合这个的宝石吗?如何从客户端应用程序执行 Google OAuth2,其中没有秘密从客户端传递到服务器?

编辑:看起来我想要的是Doorkeeper 支持的 Implicit Grant 。现在我只需要找出如何在我的 Rails 应用程序中做到这一点......

4

1 回答 1

5

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

当我在我的 Rails 应用程序中创建一个新应用程序时,Doorkeeper 界面为我提供了该应用程序Doorkeeper::Application的授权链接。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如果您不想让它发生,您可以配置它,因为有时它可能很危险。

于 2013-10-25T19:39:06.723 回答