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

标签 javascript ruby-on-rails oauth google-oauth doorkeeper

我正在尝试在 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/

相关文章:

ruby-on-rails - 为嵌套路由创建注释

java - OAuth for Spring Security - 如何实现资源声明

javascript - 如何从异步调用返回响应?

javascript - angular.isDefined 与 typeof

ruby-on-rails - update_all之后的Rails Elastic Search重新索引数据

ruby-on-rails - OSX 上的 Ruby nubie - 无法超越 rake db :migrate - get [BUG] Bus Error

oauth - 带有内部返回 URL 的 Google OpenID+Oauth 混合模式登录 - OAuth 不起作用

nginx - oauth2-proxy 身份验证在 kubernetes 集群上调用缓慢,并带有 nginx 入口的身份验证注释

javascript - jquery的微小实现

javascript - 如何为 nsIBrowserSearchService 添加观察者