実際に作成したApplicationの動作を確認していきます。 npm start すると、DefaultのBrowserが立ち上がり、「Sign in to your account」画面が表示されます。
最初はCognitoに一つもAccountが設定されていないので、下側にある「Create Account」をクリックして、「Create a new account」画面に移動し、UsernameとPasswordを入力、「CREATE ACCOUNT」をクリックして、新しいAccountを作成します。
「Your account is not granted」と表示されます。これは、Eメールでの自動認証の設定をしていないためで、Management Consoleから認証します。
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import AppWithAuth from './AppWithAuth';
import * as serviceWorker from './serviceWorker';
//Import Amplify Configure function
import { configureAmplify } from './services'
configureAmplify();
ReactDOM.render(<AppWithAuth />, document.getElementById('root'));
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: http://bit.ly/CRA-PWA
serviceWorker.unregister();
Web Serviceを実現する上で、Serviceを運営する側のUser管理はIAM Userで行います。不特定多数のUserにServiceを提供する場合は、特段のユーザー認証は必要ありませんが、不特定多数のUserからAccessを無制限に受け付けてしまうと、意図しないFileがUploadされたり、意図しない情報漏洩が起きたり、と問題となることが考えられます。一般的に不特定多数のUserからのAccessはRead Onlyとし、認証された特定多数のUserに対し、FileのUploadや、特定の情報を開示するようにすることが必要になります。
Web Serviceを利用するUserに対するUser管理は、Data Base(DB)を使って管理するのが一般的です。Serviceを24時間提供しようとすると、24時間User管理のDBを稼働させておく必要があります。AWSには、CognitoというUser管理Serviceがあり、これを利用すれば自前でUser管理用のDBを稼働させておく必要がなくなります。また、 AWSにはAmplifyというOpen SourceのLibraryがあり、Client側の実装を簡単に実現できてしまいます。まだまだ発展途上の感はありますが、これを使ってユーザー認証を実装してCognitoの使い方を把握していきます。