Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cognitoを使おう
Search
ufoo68
May 30, 2020
Technology
1
290
Cognitoを使おう
ufoo68
May 30, 2020
Tweet
Share
More Decks by ufoo68
See All by ufoo68
OpenAIでクッキー型を作る
ufoo68
1
31
初めて開発リーダーをやってみた話
ufoo68
0
110
M5Stack用の指紋認証デバイスを試す
ufoo68
0
750
結婚式のクイズアプリを自作した話
ufoo68
0
620
M5Stack Core2とAlexaでインターフォンに自動で対応してくれるIoTデバイスを作りたかった話
ufoo68
0
670
KASHIKOIHAKO
ufoo68
0
570
LIFF通話をつくろう!
ufoo68
0
1.4k
KASHIKOIHAKO計画その4
ufoo68
0
290
AWS CDKで作るLINE bot
ufoo68
0
380
Other Decks in Technology
See All in Technology
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
460
AIのグローバルトレンド2025 #scrummikawa / global ai trend
kyonmm
PRO
1
290
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
250
研究開発と製品開発、両利きのロボティクス
youtalk
1
530
react-callを使ってダイヤログをいろんなとこで再利用しよう!
shinaps
1
250
共有と分離 - Compose Multiplatform "本番導入" の設計指針
error96num
2
660
なぜスクラムはこうなったのか?歴史が教えてくれたこと/Shall we explore the roots of Scrum
sanogemaru
5
1.6k
Android Audio: Beyond Winning On It
atsushieno
0
880
5年目から始める Vue3 サイト改善 #frontendo
tacck
PRO
3
220
AI時代を生き抜くエンジニアキャリアの築き方 (AI-Native 時代、エンジニアという道は 「最大の挑戦の場」となる) / Building an Engineering Career to Thrive in the Age of AI (In the AI-Native Era, the Path of Engineering Becomes the Ultimate Arena of Challenge)
jeongjaesoon
0
190
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
9
73k
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
22
11k
Featured
See All Featured
Scaling GitHub
holman
463
140k
4 Signs Your Business is Dying
shpigford
184
22k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Automating Front-end Workflow
addyosmani
1370
200k
The Art of Programming - Codeland 2020
erikaheidi
56
13k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
Statistics for Hackers
jakevdp
799
220k
Speed Design
sergeychernyshev
32
1.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
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は ◦ ユーザー認証・管理を行うためのサービス ◦ サーバーレスとの相性がいい ◦ サーバサイドの実装量を減らすことができる •
しかし ◦ 当然フルマネージドサービスであるゆえの欠点もある ◦ 目的に応じた取捨選択が必要