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-userpools-in-production
Search
tannai
August 02, 2016
Technology
8.9k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
cognito-userpools-in-production
http://classmethod.connpass.com/event/35523/
#cmdevio
tannai
August 02, 2016
More Decks by tannai
See All by tannai
redash patche at dmm
yuukigoodman
0
770
akibago-2018-10-30
yuukigoodman
0
92
serverless-design-and-streaming-date-processing-service
yuukigoodman
0
1.1k
alexa-changes-development-process
yuukigoodman
0
1.7k
VUIとAlexaによるちょっと未来の体験の話2
yuukigoodman
0
940
regrowth2016alexa
yuukigoodman
0
1.4k
Rails App Deployment with CodeDeploy
yuukigoodman
0
1.6k
aws-lambda-in-practice
yuukigoodman
2
2.1k
serverless-from-today
yuukigoodman
2
2.3k
Other Decks in Technology
See All in Technology
オブザーバビリティを高める AI エージェント体験を考える / Designing AI Agent Experiences That Enhance Observability
aoto
PRO
2
310
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
140
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
150
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
350
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
180
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
17
120k
3つのアプローチで目指す チームを強くするAI駆動開発
thkt
0
100
FinTech 1-2 : Overview of FinTech
ks91
PRO
0
150
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
530
[AWS 秋のクラウドオペレーション祭り 2026]AWS DevOps Agentで変わるリリースと運用対応 ~リリース管理機能と Directed actions のご紹介~
furuton
2
890
大阪オフィスに Unitree Go2 がやってきたので Physical AI やってみた
dafujii
0
320
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
150
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Visualization
eitanlees
153
17k
Producing Creativity
orderedlist
PRO
348
41k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
570
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Deep Space Network (abreviated)
tonyrice
0
350
How to make the Groovebox
asonas
2
2.5k
Building Applications with DynamoDB
mza
96
7.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Transcript
࣮ࡍʹ͏ Cognito UserPools Classmethod, Inc. Yuki Tannai ࣮ફSERVERLESS #cmdevio ࣮ફserverless
#cmdevio 1
ࣗݾհ • ୮༏ل • @yuukigoodman • αʔόͰಈ͘ϓϩάϥϜͱ͔AWS ࣮ફserverless #cmdevio 2
Agenda • ServerlessͱCognito • Cognito User Pools • CognitoΛ࣮ࡍʹ͏ͨΊʹ ࣮ફserverless
#cmdevio 3
Serverlessͱ Cognito ࣮ફserverless #cmdevio 4
ServerlessΞʔΩςΫνϟ ͱ ࣮ફserverless #cmdevio 5
ඇৗறܕϓϩηε ΛΠϕϯτʹΑͬͯ τϦΨʔ͢ΔΠϯϑ ϥετϥΫνϟ1 — @zerobase 1 http://qiita.com/zerobase/items/3bc0d15980b472af841d ࣮ફserverless #cmdevio
6
ServerlessΞʔΩςΫνϟͱ • ΠϯϑϥΞϓϦͷΠϕϯτΛτϦΨʔʹ࣮ߦ ͞ΕΔඇৗறϓϩηε • ίʔυͷ࣮ߦڥ͕ϑϧϚωʔδυαʔϏεͱ ͯ͠ఏڙ͞ΕΔ • AWS Lambda͕࣮ݱํ๏ͷද֨ͱͯ͠༗໊
࣮ફserverless #cmdevio 7
serverlessͰղܾ͍ͨ͠ • EC2ແ͠Ͱ؆୯ͳϓϩάϥϜΛӡ༻͍ͨ͠ • ӡ༻ͷखؒ • ͓ۚͷઅ • ΞϓϦέʔγϣϯ͔Βຊ࣭Ͱͳ͍ίʔυΛগͳ ͍ͨ͘͠
LambdaҎ֎ͷΞϓϩʔν͋Δ ࣮ફserverless #cmdevio 8
Amazon Cognito ࣮ફserverless #cmdevio 9
Cognitoͱ • ΞϓϦέʔγϣϯͷೝূɾೝՄΛαϙʔτ͢Δ ϑϧϚωʔδυαʔϏε ࣮ફserverless #cmdevio 10
• Cognito Identity • Federated Identity • User Pools •
Cognito Sync • Sync Store • Cognito Events • Cognito Streams ࣮ફserverless #cmdevio 11
Cognito Identity • ֎෦Ͱೝূ͞ΕͨϢʔβʹରͯ͠ػೳΛఏڙ͢ Δ • Federated Identity • ֎෦ͷೝূαʔϏε͔Βͷ໊دͤ
• ಗ໊Ϣʔβͱͯ͠ͷೝূՄೳ • ෳͷIdentity ProviderΛͻͱͭͷIdentity ͱͯ͠ϚʔδͰ͖Δ ࣮ફserverless #cmdevio 12
• STS • AWSͷΞΫηεΩʔΛ҆શʹൃߦ͢Δ • AssumeRoleConditionઅͳͲIAMͱͷ࿈ ܞ ࣮ફserverless #cmdevio 13
࣮ફserverless #cmdevio 14
࣮ફserverless #cmdevio 15
Cognito Sync • ϢʔβσʔλͷಉظػೳΛఏڙ • Sync Store • KVSͷΑ͏ʹ͑ΔσʔλετΞ •
SDKܦ༝ͳΒϩʔΧϧετϨʔδͱͷ࿈ܞ ؆୯ ࣮ફserverless #cmdevio 16
• Cognito Streams • SyncΠϕϯτΛड৴ͯ͠Kinesis Streamsʹ ૹ৴͢Δ • Cognito Events
• SyncΠϕϯτΛड৴ͯ͠Lambda Function Λಉظ࣮ߦ͢Δ ࣮ફserverless #cmdevio 17
Cognito User Pools ࣮ફserverless #cmdevio 18
Cognito User Poolsͱ • AWS͕ఏڙ͢ΔIdentity Provider • ϢʔβͷొཧɺೝূΛߦͳ͏͜ͱ͕Ͱ͖ Δ •
Federated Identityͱ࿈ܞͰ͖Δ • ύεϫʔυMFAɺ֬ೝϝʔϧͷૹ৴ͳͲҰൠ తͳWebαʔϏεʹඞཁͳೝূػೳΛҰ௨Γ ͍࣋ͬͯΔ ࣮ફserverless #cmdevio 19
͍ͭʹGA! ࣮ફserverless #cmdevio 20
σϞ awslabs/aws-cognito-angular2-quickstart2 2 https://github.com/awslabs/aws-cognito-angular2-quickstart ࣮ફserverless #cmdevio 21
User Poolsͷػೳ ࣮ફserverless #cmdevio 22
Ϣʔβొ • ϢχʔΫͳϢʔβ໊Λઃఆ • ύεϫʔυೝূͱɺΦϓγϣϯͰMFAΛར༻ Մೳ • ύεϫʔυϙϦγʔΛઃఆՄೳ ࣮ફserverless #cmdevio
23
ΞτϦϏϡʔτ • ΘΕΔػձ͕ଟ͍ϢʔβଐੑΛઃఆՄೳ • ΤΠϦΞεʹΑͬͯɺϩάΠϯͰ༻͢Δଐੑ ΛࢦఆͰ͖Δ • ಠࣗͷΞτϦϏϡʔτΛઃఆͰ͖Δ ࣮ફserverless #cmdevio
24
ϝʔϧɾSMSͷ֬ೝͱMFA • Ϣʔβొ࣌ɺҰ࣌తͳೝূίʔυΛൃߦ͢Δ ͜ͱͰ༗ޮͳѼઌͰ͋Δ͜ͱΛ֬ೝ • ϝοηʔδͷςϯϓϨʔτฤूՄೳ • MFAͷઃఆ͕Մೳ ࣮ફserverless #cmdevio
25
σόΠετϥοΩϯά • ಉҰϢʔβ͕ϩάΠϯঢ়ଶΛҡ࣋Ͱ͖Δ ͷઃఆ • ༗ޮʹ͢ΔͱɺॳճϩάΠϯ࣌ʹೝূͱผʹ τϥοΩϯά༻్ͷτʔΫϯ͕σόΠε͝ͱʹ ൃߦ͞ΕΔ • τϥοΩϯά͕༗ޮͳMFAΛεΩοϓ͢
Δ͜ͱͰ͖Δ ࣮ફserverless #cmdevio 26
σόΠετϥοΩϯά • ཧऀɺSDKඇެ։ͷREST API͔ΒσόΠε ϦετΛऔಘͰ͖Δ • Global Sign-out(ಉҰϢʔβͷશαΠϯΞ τ)ཧऀݖݶͰͷαΠϯΞτՄೳ ࣮ફserverless
#cmdevio 27
App • ඇೝূϢʔβ͕ϩάΠϯύεϫʔυ࠶ൃߦͳ ͲͷAPIΛ࣮ߦ͢ΔͨΊͷΤϯςΟςΟ • TokenͱSecretɻϒϥβΞϓϦSecretΛ Θͳ͍͜ͱͰ͖Δ ࣮ફserverless #cmdevio 28
App • ྫ͑ϓϥοτϑΥʔϜ͝ͱͳͲɺෳ࡞Մ ೳ • Relying PartyͷΑ͏ͳෆಛఆͷୈࡾऀʹఏڙ͢ Δ༻్ͰΘͳ͍ ࣮ફserverless #cmdevio
29
Trigger • ॴఆͷΠϕϯτΛτϦΨʔʹͯ͠Lambda Functionͷ࣮ߦ͕Մೳ • ηΩϡϦςΟػೳͷΧελϚΠζɺΠϕϯτ τϥοΩϯάͳͲ༷ʑͳ֦ு͕Մೳ ࣮ફserverless #cmdevio 30
Cognito Identity࿈ܞ • Federated IdentityͷϓϩόΠμͱͯ͠ར༻Մ ೳ • User PoolsೝূϢʔβʹରͯ͠AWSϦιʔε ͷΞΫηεݖݶΛ҆શʹൃߦͰ͖Δ
࣮ફserverless #cmdevio 31
࣮ફserverless #cmdevio 32
API Gateway࿈ܞ • API GatewayͰͷೝՄͰɺUser Poolsͷೝূ ใΛར༻Ͱ͖Δ • API GatewayͷϚωδϝϯτίϯιʔϧ͔Β
User PoolΛઃఆ͢Δ ࣮ફserverless #cmdevio 33
࣮ફserverless #cmdevio 34
CognitoΛ ࣮ࡍʹ͏ͨΊʹ ࣮ફserverless #cmdevio 35
ϙϦγʔม • CognitoʹׂΓͯΒΕΔIDʹҰக͢ΔϦιʔ εͷΈͷݖݶൃߦ • αʔόΛհ͞ͳ͍ॲཧΛ҆શʹߦ͑Δ • IAMͷConditionઅʹมΛهࡌ ࣮ફserverless #cmdevio
36
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [
"dynamodb:Query" ], "Resource": [ "arn:aws:dynamodb:ap-northeast-1:<Account ID>:table/projects", "arn:aws:dynamodb:ap-northeast-1:<Account ID>:table/projects/index/*" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": [ "${cognito-identity.amazonaws.com:sub}" ] } } } ] } ࣮ફserverless #cmdevio 37
S3ͷ߹5 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action":
["s3:ListBucket"], "Resource": ["arn:aws:s3:::EXAMPLE-BUCKET-NAME"], "Condition": {"StringLike": {"s3:prefix": ["cognito/mynumbersgame/"]}} }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::EXAMPLE-BUCKET-NAME/cognito/mynumbersgame/${cognito-identity.amazonaws.com:sub}", "arn:aws:s3:::EXAMPLE-BUCKET-NAME/cognito/mynumbersgame/${cognito-identity.amazonaws.com:sub}/*" ] } ] } 5 http://docs.aws.amazon.com/jajp/IAM/latest/UserGuide/accesspolicies_examples.html#iam- policy-example-cognito ࣮ફserverless #cmdevio 38
͜ͷΑ͏ͳม͕ར༻Մೳ3 • ${cognito-identity.amazonaws.com:sub} • ${www.amazon.com:user_id} • ${accounts.google.com:sub} • ${graph.facebook.com:id} 3
http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/specifying- conditions.html http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/ WIF.RunningYourApp.html ࣮ફserverless #cmdevio 39
OIDC Provider • Web/UserPoolsͷଞʹFederated Identityʹઃ ఆՄೳͳIdentity Provider • GoogleSalseforceͳͲ •
IAMʹOIDC ProviderΛՃ͠ɺFederated Identityʹઃఆ͢Δ • SAML͑ΔΑ͏ʹͳΓ·ͨ͠ ࣮ફserverless #cmdevio 40
࣮ફserverless #cmdevio 41
େྔϦΫΤετ࣌ͷ੍ݶ • ʮ1 ͭͷϦετ/API ࢀরݺͼग़͠ͷ࠷େ 60ʯ4 • ΞϓϦ͔Βͷݺͼग़͠ͷ੍ݶແ͍ʁ • ؒҧ͑ͯผϦʔδϣϯΛݺͼ·ͬͯͨ࣌͘
ʹʮ੍ݶ͠ͱ͍ͨΑʯͱݴΘΕͨ 4 http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/limits.html ࣮ફserverless #cmdevio 42
Trust Relationship • ͲͷTokenൃߦऀʹରͯ͠Assume RoleΛڐՄ ͢Δ͔ͷϙϦγʔ • cognitoͷΟβʔυ͔ΒRoleΛ࡞ΔͱͪΌΜ ͱઃఆ͞Ε͍ͯΔ •
ࣗͰฤू͢ΔͱϋϚΔͷͰҙ AccessDenied -- Not authorized to perform sts:AssumeRoleWithWebIdentity ࣮ફserverless #cmdevio 43
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {
"Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:aaaa-bbbb-cccc-dddd-1111-2222" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] } ࣮ફserverless #cmdevio 44
• audͰCognito Identity Pool IDΛࢦఆ • amrͰϓϩόΠμΛࢦఆ • ྫ͑facebookͷ߹ "ForAnyValue:StringLike":
{ "cognito-identity.amazonaws.com:amr": "graph.facebook.com" } ࣮ફserverless #cmdevio 45
·ͱΊ ࣮ફserverless #cmdevio 46
• User PoolsͰೝূػೳΛAWSʹҠͤΔ • Cognito Identityͱ࿈ܞͯ͠ߋʹػೳΛAWSʹ ҠͤΔ • ࣗͷϏδωεʹԊ͏ΓํͰαʔόϨεʹ ͔͍ͬͯ͜͏
࣮ફserverless #cmdevio 47
End ࣮ફserverless #cmdevio 48