« AWS Black Belt Online Seminar「AWS認定試験準備に向けて」の資料およびQA公開 | メイン | AWS Black Belt Online Seminar「EC2 Windows」の資料およびQA公開 »

AWS Black Belt Online Seminar「Amazon Cognito」の資料およびQA公開

こんにちは、テクニカルトレーナーの二條です。

先日開催致しました AWS Black Belt Online Seminar 「Amazon Cognito」の資料を公開いたしました。当日参加者の皆様から頂いたQAの回答と併せてご紹介致します。

今後のAWS Black Belt Online Seminarのスケジュールは こちら です。皆様のご参加をお待ちしております。

 
【Q&A】
Q1: ELBを使用する際、Cognitoで認証できますか?
A1: ELBにはIAMベースでHTTP(S)クライアントを制御する機能がないため、CognitoでELBへのHTTPアクセスを認証することはできません。(ELBのAPIを操作するための権限であれば、Cognitoで制御することは可能です。)

Q2: Cognito Syncの中身は、管理側から参照・アップデートできますか?
A2: はい、マネジメントコンソールおよびCLI/SDK/APIを使って参照・アップデートすることができます。

Q3: モバイル用サービスとのことですが、通常のwebアプリケーションでも使える認識です。モバイルのみに使えるサービスの部分などはありますか?
A3: Amazon CognitoはモバイルおよびWebアプリケーション用のサービスです。
https://aws.amazon.com/jp/cognito/
モバイルのみに特化したサービスではなく、Webアプリケーション(特にJavaScriptベースのシングルページアプリケーション等)でもご利用いただけます。ただし、モバイルやJavaScript用のSDKにはCognito関連の機能が充実(たとえば抽象化されたSignInやCredentialsの取得をサポート)しており、サーバサイド用言語のSDKより簡単に実装ができるようになっています。

Q4: Syncはローカルストレージに保存するという処理がクラウド上のDBに保存しているかのように振る舞うということでしょうか。
A4: ローカルストレージにデータを保存した後、明示的にsynchronizeを実行しなければクラウド上のデータストアには同期されないため、ローカルとクラウド上の操作が完全にシームレスになっているわけではありません。しかし、各SDKのAPIは簡単に同期ができるよう設計されています。

Q5: Credentials発行は poolやgroup role など設定しておけば、例えばsigninメソッドを呼ぶだけでcredentialが発行されるものなのか?
A5: いいえ、Sign inの処理はYour User Pools(User Pool)の、Credentialsの発行はFederated Identities(Identity Pool)の責務になるため、Credentialsを得るには Sign in 後に Identity Poolの GetId 及び GetCredentialsForIdentity を実行する必要があります(各SDKがよりハイレベルなインタフェースを提供しています)。詳しくは Cognito の認証フロー 、および User Pool と Identity Pool の統合に関するドキュメントをご確認ください。

Q6: 確認メールは日本語に対応していますか?
A6: 現時点でAmazon Cognitoのマネジメントコンソールは日本語のメッセージに対応しておりませんが、AWS CLI/APIを利用して確認メッセージを設定するか、Custom message トリガーに Lambda ファンクションを設定しメッセージを生成することで日本語の利用が可能です。

Q7: AWS Directory Service と Cognito Your User Pools の使い分けは、どのようなシチュエーションがありますか?
A7: AWS Directory Service は Microsoft Active Directory に準じた使い方(例えば従業員アカウントやドメインベースのリソース管理など)や、あるいは AD Connector によるオンプレミスの Active Directory との接続に用いることができます。Cognito Your User Pools はモバイルおよびWebアプリケーションにユーザ管理機能を追加するのが典型的なユースケースです。

Q8: UserPoolIdとClientIdが漏れたときの影響範囲について教えてください。
A8: UserPoolIdとClientIdを知ったクライアントがSignUpを実行できるようになります。しかし、一般的にConsumer向けのモバイルアプリやWebサービスはそもそもエンドユーザに新規ユーザ登録等の操作を許すことが多いため、Cognito Your User Poolsで構築したサービスに誰でもユーザ登録ができること自体は通常特に問題にはなりません。もし第三者によるユーザ登録操作を制限したいのであれば、ユーザ登録用のAPIを用意してクライアントからはそのAPIにアクセスするようにし、API内でAdminCreateUserなどを使ってユーザ登録を代行する方法などが考えられます。

Q9: ProviderにSalesforceが入る予定はありますか?B2BだとSalesforceと連携することがほとんどなので、連携されるとプロジェクトにて提案しやすいと考えてります。
A9: SalesforceはOpenID Connectに対応しているため、今すぐCognitoと連携することができます。詳細はこちらのブログもご参照ください。

Q10: Emailでサインアップした場合、Emailの変更は可能でしょうか。
A10:(Emailをエイリアスに設定した場合としてお答えします)はい、適切な権限を持つユーザまたは管理者による変更が可能です。
http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/user-pool-settings-attributes.html

Q11: accessKeyId, secretAccessKeyを埋め込んではいけない(流出してはいけない)のは分かりますが、Developer Identityを使う場合に IdentityPoolIdは埋め込んでも(流出しても)問題ないのでしょうか。
A11: はい、IdentityPoolIdは認証情報ではないため、特に問題はありません。

Q12: Federated IdentitiesのIDプロバイダとして、LINE Login Platformを使うことは可能でしょうか?
A12: 現時点では対応しておりません。

Q13: カスタムオーソライザーとネイティブサポートを併用したAPIGatewayの使用は可能でしょうか。Facebookのユーザはカスタムで、ユーザプールのユーザはネイティブを利用するAPIの設定をしたいです。
A13: API Gatewayでは一つのリソース/メソッドに複数のオーソライザーを指定することができませんが、以下の方法はいかがでしょうか。
1. 一つのカスタムオーソライザーを設定し、Lambdaファンクション内で適切なIdentity Providerに認証情報を確認する
2. FacebookとUser PoolをAuth Providerに設定したIdentity Poolを作成してAPI Gatewayの認証設定を "AWS_IAM" にし、Identity PoolからCredentialsを取得した上でAPIにアクセスする

Q14: Federated IdentityにおけるIdentityデータは永続する類のものでしょうか?
A14: はい、Identityは永続的です。ただし、未認証Identityから認証済Identityに移行する際などに新しいIdentityIDが割り当てられることがあります。

Q15: Developer Identityを使う際に、自前の認証サーバー(バックエンド)部分((自前の認証後に)getOpenIdTokenForDeveloperIdentityを実行する)を LambdaとAPI Gatewayで実装することは可能でしょうか。
A15: はい、可能です。

Q16: 未認証ユーザで発行されるIAMロールを使って、EC2に動作するWEBサイトへのアクセス制御を行うことは可能でしょうか?
A16: EC2上のWebサーバへのアクセスをIAMベースで制御する方法がないため不可能となります。

Q17: User Poolに格納したユーザー情報のエクスポートは可能でしょうか?
A17: 現時点で、Your User Poolsにはエクスポート機能がありません。ListUsers APIを使って読み出すか、あらかじめPre sign-upトリガーなどを設定して任意の場所にユーザ情報を逐次保存するなどの方法が考えられます。

Q18: Node.jsからサインアップ時にConfirmationの認証なしで、どのようにユーザーを有効化することができますか?
A18: サーバサイドからの操作ということであれば、AdminCreateUser APIでユーザを登録することでConfirmをスキップする(ただし初回サインイン時にパスワードの変更が求められます)か、SignUp APIとAdminConfirmSignUpを組み合わせることでConfirmを自動化することができます。
 
以上です。

コメント

Twitter, Facebook

このブログの最新情報はTwitterFacebookでもお知らせしています。お気軽にフォローください。

2018年4 月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30