我正在尝试在Ruby on Rails API应用程序中使用Doorkeeper进行身份验证。从客户端AngularJS应用程序,我想获得一个访问令牌。目前,这涉及到/ oauth / authorize的GET请求,它给了我一个代码,然后我将该代码与client_id以及/ oauth / token的秘密一起发布。我不想从客户端应用程序发送客户端ID和密码,因为它们以纯文本形式存储在JavaScript文件中。我想关注this flow,其中response_type
是token
,而不是code
,但我无法弄清楚如何使用门卫这样做。 Their wiki示例似乎都涉及将客户端ID和密钥POST到/ oauth / token。
门卫是否是正确的宝石?如何从客户端应用程序执行Google OAuth2,其中没有秘密从客户端传递到服务器?
编辑:看起来像我想要的是Implicit Grant,Doorkeeper supports。现在我只需要在我的Rails应用程序中找到如何做到这一点......
答案 0 :(得分:5)
无需额外的服务器端配置。
当我在我的Rails应用程序中创建一个新的Doorkeeper::Application
时,门卫界面为我提供了一个授权链接,其中包含response_type=code
该应用程序。
我将其更改为response_type=token
,当我向其发出GET请求时,它会立即使用access_token
代替code
进行回复。授权网址看起来像http://my-rails-doorkeeper-app/oauth/authorize?client_id=1234&redirect_uri=http://my-angularjs-app&response_type=token
。
更新:
仅当我们还允许对授权流进行隐式授权时,才能应用此选项。 默认情况下,门卫将允许其四种流程(隐式授权,授权授权,密码和client_credentials)。
如果您不想让它发生,您可以在initializer/doorkeeper.rb
中对其进行配置,因为有时可能会有危险。