2016-12-19 33 views
-1

私はrails 5アプリを構築しており、herokuにデプロイされています。 シングルサインオンを実現するためにAWS congnitoを使用しますが、それを実装する例が十分ではありません。 認証にdeviseを使用しています。今私の目標は、すべてのユーザーをAWS cognitoに入れて、自分のレールアプリから認証することです。Ruby on rails + aws congnitoの例

これは私がAWS congnito with railsで見つけた唯一のリソースです。これを実現するために、いくつかのサンプルアプリケーションやツールやRuby APIドキュメントへのリンクを探しています。

お願いします。バラに基づいて

アップデートは

require 'aws-sdk' 

ENV['AWS_ACCESS_KEY_ID'] = 'XXXXXXXXXXXXXXXXX' 
ENV['AWS_SECRET_ACCESS_KEY'] = 'XXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' 
region_name = 'us-east-1' 
endpoint = 'cognito-idp.us-east-1.amazonaws.com' 

client = Aws::CognitoIdentityProvider::Client.new(
    region: region_name 
) 


resp = client.admin_create_user({ 
    user_pool_id: "us-east-1_iD7xNHj0x", # required 
    username: "Test", # required 
    user_attributes: [ 
    { 
     name: "email", # required 
     value: "[email protected]", 
    }, 
    ], 
    validation_data: [ 
    { 
     name: "Email", # required 
     value: "AttributeValueType", 
    }, 
    ], 
    temporary_password: "PasswordType", 
    force_alias_creation: false, 
    message_action: "RESEND", # accepts RESEND, SUPPRESS 
    desired_delivery_mediums: ["EMAIL"], # accepts SMS, EMAIL 
}) 

エラースタックトレース回答

home/sachin/.rvm/gems/[email protected]/gems/aws-sdk-core-2.6.38/lib/seahorse/client/plugins/raise_response_errors.rb:15:in `call': User does not exist. (Aws::CognitoIdentityProvider::Errors::UserNotFoundException) 
    from /home/sachin/.rvm/gems/[email protected]/gems/aws-sdk-core-2.6.38/lib/aws-sdk-core/plugins/idempotency_token.rb:18:in `call' 
    from /home/sachin/.rvm/gems/[email protected]/gems/aws-sdk-core-2.6.38/lib/aws-sdk-core/plugins/param_converter.rb:20:in `call' 
    from /home/sachin/.rvm/gems/[email protected]/gems/aws-sdk-core-2.6.38/lib/seahorse/client/plugins/response_target.rb:21:in `call' 
    from /home/sachin/.rvm/gems/[email protected]/gems/aws-sdk-core-2.6.38/lib/seahorse/client/request.rb:70:in `send_request' 
    from /home/sachin/.rvm/gems/[email protected]/gems/aws-sdk-core-2.6.38/lib/seahorse/client/base.rb:207:in `block (2 levels) in define_operation_methods' 
    from aws_cognito.rb:20:in `<main>' 

アップデート2

resp = client.admin_initiate_auth({ 
    user_pool_id: "us-east-1_uKM", # required 
    client_id: "3g766413826eul9kre28qne4f", # required 
    auth_flow: "ADMIN_NO_SRP_AUTH", 
    auth_parameters: { 
    "EMAIL" => "[email protected]", 
    "PASSWORD" => "Ibms#1234" 
    } 
}) 
+0

を使用して携帯電話番号を確認するための対応する方法を見つけることができます。 –

+0

@Sachin Singh、私はまったく同じことをしているので、分かち合いに感謝します。あなたはDeviseをアンインストールしましたか、それをDeviseの中に入れましたか?あなたがこのコードをどこに残しておいたのですか? – arabisoft

+1

私はdeviseを削除しませんでしたが、ほとんどのコンポーネントの使用を中止し、独自のサインアップ、サインイン、パスワードコントローラの忘れ、ビジネスロジックを作成しました。 –

答えて

3

まず第一に、あなたはあなたのアプリケーションのための

をユーザープールを作成する必要がありますがsign_up、sign_in、変更のためのRubyのメソッドを見つけることができるAWSコンソール

を介してユーザのプールを作成するには、このlinkを使用しますhttp://docs.aws.amazon.com/sdkforruby/api/Aws/CognitoIdentityProvider/Client.html

EDIT

でパスワードや他の多くの機能さて、あなたはあなたが作成しているユーザーのプールを設定する必要が電子メールの確認、あなたは携帯電話番号の確認が必要な場合 admin_initiate_auth

を使用して、ユーザーsign_in sign_up

を使用してユーザーをサインアップすることができます。

あなたは、私はあなたがここにgoogle.comでより多くの例を見つけることはないだろうhttp://docs.aws.amazon.com/sdkforruby/api/Aws/CognitoIdentityProvider/Client.html#confirm_sign_up-instance_method

+0

私はそれを試してみる助けてくれてありがとう。 –

+0

更新された投稿、新しいユーザーにサインアップしている間に問題が発生しました。 –

+0

@ SachinSingh私はサインアップのために私の答えにいくつかの変更を加えました。 –