如何在 rails 3 中使用 devise 和 aws cognito

How to use devise and aws cognito in rails 3

我正在使用 rails 3.2 并设计 3.2.3。我正在尝试使用 AWS Cognito Developer Authenticated Identities,但发现自己不知道该怎么做。

我们的用户必须经过身份验证。如果我使用的是 Devise gem?

,我该如何为身份池中的身份验证提供程序使用 Custom

我已经在使用 aws-sdk v1 并安装了 v2 gem 以支持 Cognito。

gem 'aws-sdk-resources', '~> 2'

我看到了这个 post Upload to Amazon S3 and Calling Amazon Cognito Identity from Rails server 但不知道下面的方块如果正确的话应该放在哪里。

require 'aws-sdk'
cognito = Aws::CognitoIdentity::Client.new(region:'us-east-1')
resp = cognito.get_open_id_token_for_developer_identity(
           identity_pool_id: 'IDENTITY_POOL_ID', 
           logins: {'MY_PROVIDER_NAME' => 'USER_IDENTIFIER'})

不幸的是,Cognito 在 Ruby 中没有针对开发人员身份验证的端到端示例,但是 Android and iOS examples.

通常,流程是创建一个 Cognito Identity 客户端,然后该客户端向您的后端发送请求。后端将与 Cognito 通信以获取 get/generate ID 和令牌,并将它们发送回客户端。然后,客户端将使用该 ID 和令牌来获取凭据。上面的博客 post 和 developer guide 有一些较低级别的细节。

就代码片段而言,第二行是创建 Cognito 客户端。第三个与 Cognito 通信,其响应将用于将 ID 和令牌发送回客户端。

我最终在 API:

中使用了类似下面的代码
if user.valid_password?(params[:password])
    #get the cognito token and id
end