CLIからアカウント生成&パスワード認証を行えるようになる。公式ページによると、旧(レガシーな)システムからのユーザー移行を行う場合、チェックを付けると移行がスムーズとのこと。(逆に言えば、それ以外ではチェックを外すのがよい)また、「属性の読み込みおよび書き込みアクセス権限を設定する」をクリックすると、各種ユーザー属性(attributes)の読み込みや書き込みの許可/不許可が設定できます。(デフォルトはすべて読み書き可能)Lambdaトリガの設定Cognitoでは、各種認証処理(サインアップ・サインインなど)の前後に、Lambda関数による独自の処理を追加することができます。その独自処理を行うタイミング&実行するLambda関数を定義します。これを使用すると、例えば以下のようなことができます。サインアップ時に、検証コードや検証リンクなしにメールアドレスを強制的に「検証済み」にするログイン時に、Cognitoによる認証(ID・パスワード・検証コードなど)以外に、独自の認証ロジックを追加できる(下記リンク参照)サインアップ&認証コード送信時に送るメールの内容を、自由にカスタマイズできる。これ、実際触ると分かるんですが、本当に便利なんです。※このLambdaトリガに関しては、次回or次々回くらいに、ブログに記載しようと思ってます。ちなみに、下記公式ページに詳しいことが記載されています。Lambdaトリガ処理は下表のタイミングで実施することができます。(公式ページより抜粋)あとは最終確認として設定内容が表示されるので、問題なければ「プールの作成」をクリックすると、ユーザープールの作成が実行されます。フェデレーテッドアイデンティティCognitoには、「認証を行ったユーザーに対して、特定のロールを割り当てる」ことができる「フェデレーテッドアイデンティティ」という機能があります。これを利用すると、例えば下記のことができます。ユーザープールごとに、使用できる機能(例えば、実行できるLambdaなど)を割り当てることができる認証(=ログイン)をしていないユーザーにも、権限を与えることができる。「新しいIDプールの作成」画面では、下記の設定を行います。認証に使用するプロバイダ。設定項目はプロバイダ毎に異なる。「認証されたユーザー」及び「認証されていないユーザー」それぞれに割り当てるロールを設定できます。(先述の「認証されていないID」のチェックを外しても「認証されていないユーザー」が表示されるのは、なんか変ですが...)「認証されたユーザー」及び「認証されていないユーザー」それぞれに、下記を編集します。「編集」ボタンをクリックすると編集可能と、長々と書いてしまいましたが、これで一通りCognitoユーザープールの説明ができました。次回からは、実際にソースコードから下記を実行しようと思います。core(ver3.0)がメジャーリリースされました。(LTSはver3.1だそうですが)そして、9/26(木)にマイクロソフトで開催された、下記イベントに参加してきました。Coreの概要について、下記が魅力的だな、と思いました。上記のうちBlazorについて簡単に触って、ついでにAzureに公開するところまでやりましたので、紹介がてら。Blazorとは?Blazorの概要&詳細については、マイクロソフト公式ページに書いてありますので、そちらを参照。「Vue.jsの"単一ファイルコンポーネント"を、C#で実現した感じ」でした。(「Vue.jsの単一ファイルコンポーネント」についてはググって下さい)実際、一言で表現するなら、こんな感じになると思います。Studioで、下記手順でBlazorプロジェクトを作成します。[ファイル]を選択し、テンプレートから[Blazorアプリ]を選択プロジェクト名などを設定し「作成」をクリックプロジェクトを作成後、下記手順で新しいRazorコンポーネントを追加します。[Razorコンポーネント]を選択プログラムを書くとりあえず、サンプルで書いたのソースが下記。(クッソ長くなったな...)razor記法についてはここでは突っ込みませんが、特徴は下記あたりでしょうか。下記ソースには「@onclick」はないですが、デフォルトで作成される「Pages/Counter.razor」に記載されています。「Vue.jsで言う」と言っていますが、このあたりが先程の「Vue.jsの"単一ファイルコンポーネント"を、C#で実現した感じ」な気がします。}}Bootstrapの適用また、HTML部分を見て気づいた人もいるでしょうが、上記HTMLにはBootstrap4を適用してます。Blazorでも、下記パッケージをNuGet経由でインストールすれば、Bootstrapを使用出来ます。インストール後、Pages/_Host.cshtmlファイルの「body」タグに下記を追加するだけでOKです。src="_content/BlazorStrap/blazorStrap.js"></script></body>Azureで動かすで、クライアント部分は完成したので、せっかくなのでAzureにデプロイして、Azure上で動かします。デプロイ方法ですが、下記方法でOKです。新規作成」で、下記画像の各種情報を指定し、「作成」をクリックする。「リソースグループ」「ホスティングプラン」は、その場で新規作成ができます。デフォルトだとUSリージョンが選ばれている場合があるので注意。※もし「発行先」で「WebサーバーかAzurか」という選択が出た場合は「Azure」を選択してください。(一度だけ出たのですが、再現しなかった...)ただ、Azureにデプロイ完了しても、このままでは動きません。Core3.0が動くようにする必要があります。それには、下記手順を実行すればOKです。クリックし、「全般設定」タグで以下の設定をする。coreプラットフォーム:64bitこれでデプロイしたBlazorアプリの「概要」に表示されているURLを表示すれば、Azure上でBlazorアプリが動くはずです。Core3.0に対応していない」のが理由と思われるので、とりあえずは気にしなくてOKです。Functionのソースはこちら。}}まとめと、かなり駆け足でしたが、Blazorについて、簡単に紹介しました。個人的にマイクロソフトは、環境やプラットフォームはかなりシェア持ってるけど、Web系言語としての採用率がJS系フレームワークやPHPなどに比べてイマイチ...と思っていただけに、巻き返しに期待したいところです。FrameworkやCloudFront周りのネタでしたが、今回からはしばらくCognito関連のお話。今回はユーザープール&IDプールによる、認証基盤作成について。※ちなみに次回以降は、下記ネタの予定。今回触れることユーザープール作成IDプール作成Cognitoの認証基盤について以下の2つがあります。Cognitoのベースで、ID・Eメール・パスワードなどによるユーザー認証関連の基盤を提供する。ユーザープールを使用してサインインしたユーザーに、設定したロールを割り当てる。ロールにアクセス権限があるかどうか今回は主に「ユーザープール」について記載します。ユーザープール名の設定プール名:作成するユーザープール名を入力すればOKです。作成方法:下記2つから選択できます。デフォルトを確認する:全項目にCognitoのデフォルト値が設定されます。(作成確定前に変更可能です)ステップに従って作成する:順番に1項目ずつ設定を行います。(自分でカスタマイズしたい場合はこちら)※この記事は「ステップに従って作成する」を前提に記載してます。サインイン方法&属性の指定サインイン方法、およびサインアップに必要なユーザー属性を設定します。ユーザー名を変更したい場合に選択。ユーザー名が選択可能ユーザー属性(attributes)サインアップする際に、入力を必須とするユーザー属性を指定します。(どんな属性があるかは、画像を参照)チェックを付けた属性は「入力必須」となり、サインアップ時に値を指定しないと、サインアップ不可となります。チェックを付けてない項目は「使用不可」ではなく「任意項目」になるだけなので、サインアップ時に値を指定すれば、問題なく使用&登録可能です。「email」や「phone_number」は、後述する多要素認証でEメールやSMSでコードを送る場合、必須になります。カスタム属性について属性を自分で追加することも可能です。「カスタム属性を追加する」をクリックすると、自分でカスタム属性を設定可能です。カスタム属性の名前です。値を変更できるかどうか※Amplify/AuthやAWS-SDKのAPIで指定する場合、下記の様にしないとエラーになります。"fuga"}セキュリティ設定パスワード強度設定パスワードの強度を設定できます。設定可能なのは下記です。アプリから作成するには「adminXXX」というメソッドを使う必要がある。signUpメソッドで、サインアップ可能。管理者(または開発者)がサインアップした場合、そのアカウントには「仮パスワード」が付与されます。その仮パスワードの「有効期限」を設定します。※この場合、対象アカウントは(仮パスワードでの)初回ログイン時に「本パスワード」を設定する必要があります。「省略可能」の場合、ユーザーが多要素認証を使用するかどうかを設定できます。※オフにしても、自前で多要素認証を実装できます。「SMS」の場合、登録した電話番号に検証コード送信します。「両方」にした場合、(なぜか)SMSにしか送られない模様。「なし」にした場合、パスワードを忘れた際の再設定ができません。SMSによる認証コードを送信する場合、SMS送信に必要なロールを指定する。この画面で新規作成することも可能。※SMS送信しないなら空欄でOKEメールアドレスの設定Eメールで検証コードを送信する場合の設定です。Service)に検証済Eメールを登録済の場合、SESの登録情報から下記を選択できます。リージョン送信元Eメールアドレス返信先Eメールアドレス※SES登録していない、または使用しない場合、どれもデフォルトのままでOK。その他、Eメール送信にSESを使用するかどうかを選択できます。使用するする場合は上記のメール設定が、使用しない場合はデフォルトのメール設定が適用されます。※使用しない場合、送信元Eメールアドレスは「no-reply@verificationemail.com」となります。メッセージのカスタマイズ検証コード送信メール、及びユーザー名&仮パスワード送信メールの内容を設定できます。それぞれ、下記のメールが送信されます。ユーザー名&仮パスワード送信メール設定できるのは下記項目です。検証タイプ(検証コード/検証用URL)件名(Eメールのみ。{####}とすると、実際のメールに上記が埋め込まれます。タグ&デバイス記憶の設定ユーザープールにタグを埋め込むかの設定です。タグを埋め込みたい場合、キー&値のペアを設定します。(無理に埋め込む必要はありません。)またデバイス記憶は、下記の設定を行えます。「はい」にした場合、記憶済デバイスからのアクセスの場合、認証コード/リンク/TOTPによる認証をスキップ可能。デバイスを記憶しない場合、設定不要ですなんかかなり長くなってきたので、続きはその2で。19:06【AWS】Cognitoによる認証を実装する(その1)Tweet広告を非表示にするもっと読むコメントを書く次のページプロフィールid:Makky12IT技術やプログラミング関連など、技術系の事を備忘録的にまとめています。C#/JavaScript/TypeScript//PHP/Python/Vue.js/Bootstrap等でWebアプリのバックエンド設計・開発や、フロントエンドのデザイン実装をしています。Code)やCI/CDとかを考えるのがほとんどです。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。