Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Cognitoを使おう
Search
ufoo68
May 30, 2020
Technology
320
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Cognitoを使おう
ufoo68
May 30, 2020
More Decks by ufoo68
See All by ufoo68
BlenderをCodexで動かす
ufoo68
1
700
改めて考えるOSSのあり方について
ufoo68
0
84
文法で学ばないJavaScript
ufoo68
0
98
Cookieとは?
ufoo68
1
100
今更ながら、開発現場での生成AI活用について
ufoo68
0
98
28歳独身エンジニア 婚活してみた
ufoo68
0
53
OpenAIでクッキー型を作る
ufoo68
1
84
初めて開発リーダーをやってみた話
ufoo68
0
160
M5Stack用の指紋認証デバイスを試す
ufoo68
0
960
Other Decks in Technology
See All in Technology
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.6k
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
330
映像変換サーバーなしで端末内でHLSを生成してライブ配信
hikarusato
0
120
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
27
15k
事業課題から技術的負債に向き合う
sansantech
PRO
2
1.9k
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
2k
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
150
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
220
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
510
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
3k
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
160
LLMに渡さなかった仕事
nanaism
0
480
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
Mind Mapping
helmedeiros
1
360
30 Presentation Tips
portentint
PRO
1
400
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
530
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
240
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
Marketing to machines
jonoalderson
1
5.8k
Making Projects Easy
brettharned
120
6.8k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
720
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
The Spectacular Lies of Maps
axbom
PRO
1
990
Transcript
Cognitoを使おう お手軽ユーザー認証
自己紹介 • 名前 ◦ 松永勇太 • 出身地 ◦ 滋賀県 •
やってること ◦ スポーツIoTLT主催 ◦ AWSを使った開発 • 昔やってたこと ◦ 鳥人間コンテスト ◦ 梅キャン勉強会主催
皆さん、ユーザー認証機能 の実装してますか?
ユーザー認証はCognitoを使いましょう
Cognitoとは • ユーザー認証 • ユーザーデータの管理 • 外部の認証サービスとの連携 をフルマネージドで行ってくれるAWSサービス
今回の内容について • 話すこと:Cognitoユーザープール ◦ ユーザー認証・管理を行う • 話さないこと:CognitoIDプール ◦ 他の認証サービスとの連携を行う
ユーザー認証の基本(ざっくり) ユーザー認証がやりたいことはユーザーの本人確認 ユーザーは自分自身であることを証明するものが必要
ユーザー認証の基本(ざっくり) ウェブアプリでは本人確認をログインという形で行う メールアドレス・パスワード アクセストークン
ユーザー認証の基本(ざっくり) アクセストークンがユーザーの身分証明書代わりになる トークン
ユーザー認証を作るために必要なこと 1. ユーザー作成 a. ユーザーを識別するための固有の IDが必要 b. メールアドレスを登録させるなら検証をする c. 二段階認証をするなら電話番号も登録する
2. ログイン a. IDとパスワードからアクセストークンを生成 b. アクセストークンの有効期限を設定 c. ログアウト時にアクセストークンを削除 3. ユーザー権限 a. 一般ユーザーと管理者で使える機能が変わる b. あるユーザーの権限の変更も生じるかもしれない このすべて、Cognitoに任せましょう! あくまで一例。 実際はもっと多くの機能が必要
サーバーレスで行うCognito認証 ユーザー作成はsignUpというAPIを一つ呼ぶだけ Lambda から SignUpメソッドを呼ぶ ユーザー情報の管理と メール検証を行う
サーバーレスで行うCognito認証 ログインも同じくsignInというAPIを一つ呼ぶだけ Lambda から SignInメソッドを呼ぶ 3つのトークンを返す • IDトークン • アクセストークン
• 更新トークン
サーバーレスで行うCognito認証 アクセストークンの検証にはLambdaは不要 API Gatewayにアクセストークンの ヘッダー付きのリクエストが呼ばれる カスタムオーソライザーとして直接呼ばれる。 そのまま検証結果を返す
サーバーレスで行うCognito認証 Amplifyを使うとクライアントアプリからの直接の呼び出しが可能 Amplifyはアプリケーションのデプロイを行うための AWSサービス
グループ機能で権限管理 グループ機能とIAMロールを連携させることでユーザー権限を管理できる グループ2 グループ3 グループ1
Cognitoを使う利点 1. 実装量が減る a. 工数の削減 b. 責任範囲をAWS側に押し付ける c. テストする項目が減る 2.
サーバーレスと相性がいい a. サーバーレスでシステムを組むなら必須 b. Lambdaトリガーを組み合わせてより柔軟な開発が可能 3. 必要に応じてセキュリティレベルを上げられる a. 数回クリックで有効化 b. 料金は割増になるので注意
Cognitoの欠点 1. 属性・カスタム属性がイケてない a. 属性とはCognitoで管理するユーザーデータ b. StringかNumberしか指定できない c. カスタム属性の途中変更はできない(一度消す必要がある) 2.
データの取得・操作が自由にできない a. 検証コードの取得・変更ができない b. ユーザーデータの取得に回数制限がある c. クエリ操作ができない( KVS以下)
まとめ • Cognitoは ◦ ユーザー認証・管理を行うためのサービス ◦ サーバーレスとの相性がいい ◦ サーバサイドの実装量を減らすことができる •
しかし ◦ 当然フルマネージドサービスであるゆえの欠点もある ◦ 目的に応じた取捨選択が必要