Black Belt Online Seminar Amazon Cognito
-
Upload
amazon-web-services-japan -
Category
Internet
-
view
2.356 -
download
0
Transcript of Black Belt Online Seminar Amazon Cognito
Amazon CognitoMobile Identity Management and Data Synchronization
Keisuke Nishitani (@Keisuke69)Amazon Web Services Japan K.K.
May 18, 2016
Profile
Keisuke NishitaniSolutions Architect, Amazon Web Service Japan K.K
@Keisuke69 Keisuke69
✤ AWS のソリューションアーキテクト✤ Web サービス系✤ モバイル系
✤ クラウドを使ったアプリ開発とかモバイル開発の話しをよくしています✤ モバイルニンジャ1号機✤ REST おじさん✤ Lambda Wizards
✤ 餃⼦の王将エヴァンジェリスト(⾃称)
Keisuke69 Keisuke69Keisuke69x
AWS Black Belt Online Seminer へようこそ!✤ 質問を投げることができます!
✤Adobe Connect のチャット機能を使って、質問を書き込んでください。(書き込んだ質問は、主催者にしか⾒えません)
✤Twitterへツイートする際はハッシュタグ #awsblackbelt をご利⽤ください。
①画⾯右下のチャットボックスに質問を書き込ん
でください
②吹き出しマークで送信してくださ
い
内容についての注意点✤ 本資料では2016年5⽉18⽇時点のサービス内容および価格についてご
説明しています。最新の情報は AWS 公式ウェブサイト(http://aws.amazon.com) にてご確認ください。
✤ 資料作成には⼗分注意しておりますが、資料内の価格と AWS 公式ウェブサイト記載の価格に相違があった場合、AWS 公式ウェブサイトの価格を優先とさせていただきます。
✤ 価格は税抜表記となっています。⽇本居住者のお客様がサービスを使⽤する場合、別途消費税をご請求させていただきます。AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided.
モバイル開発における課題
付加価値を⽣まない重労働
どうやって差別化するか
アプリ開発、とくに差別化のための開発に集中したい
モバイル開発における課題
開発者が直⾯する課題
• 複数プラットフォーム• スケーラビリティの確保• ⾼い運⽤管理コストと限られた予算• ユーザエクスペリエンスの阻害• ユニークなユーザ ID の管理
モバイルアプリケーションアイデンティティの管理と認可
データ同期アクティブなユーザの分析
エンゲージメントの分析Push 通知
イベントトリガークロスプラットフォーム
データのバリデーションと変換ファイル/メディア保管⽤ストレージ
データベースAnd More….
AWS Cloud Infrastructure
AWS Mobile サービス
Cognito
Kinesis DynamoDB S3 SQS SES
グローバルインフラ
コアとなるサービス群
モバイルに最適化されたコネクタ
モバイルに最適化されたサービス
AWS SDK for Android
ストレージ データベース キュー メール コンピュートネットワーク
AWS Mobile SDK
Mobile Analytics SNS Mobile Push
AWS SDK for iOS AWS SDK for Unity
あなたのモバイルアプリ
ゲーム ユーティリティ ファイナンス エンターテインメント
Lambda
Device Farm API Gateway
AWS SDK for JavaScript
ソーシャル
AWS Mobile SDK✤ 全てのサービスに共通の認証機構✤ オンライン・オフラインを⾃動でハンドリ
ング✤ クロスプラットフォームのサポート:
Android, iOS, Fire OS, Unity, Xamarin✤ Mobile OS への最適化
例: ローカルオフラインキャシュを利⽤するアーキテクチャ
✤ メモリフットプリントの削減✤ 各プラットフォームのエンハンスに追従
iOS Android Fire OS Unity
Xamarin
典型的なユースケースユーザユーザ認証をしたい適切な権限を与えたい⾏動分析をしたい
データデータの同期をしたいデータベースを使いたいセンサーデータを送りたい
メディアファイル画像/⾳楽を保存したいアセットを配信したい
ロジックサーバサイドで処理したい独⾃ API を⽤意したい
メッセージプッシュ通知を送りたい
テスト実機でテストしたい
<TEST/>
典型的なユースケースユーザ データ メディアファイル
ロジック メッセージ テスト
<TEST/>
Amazon Cognito
AWS Identity and Access Management
Amazon Mobile Analytics
Amazon DynamoDB
Amazon Kinesis
Amazon CloudFront
Amazon S3Transfer Manager
AWS Lambda
API Gateway
Amazon SNS Mobile Push AWS Device Farm
Amazon Cognito
インフラ構築✤ インフラの運⽤管理
✤ キャパシティ✤ スケール✤ デプロイ✤ 耐障害性✤ モニタリング✤ ロギング
✤ ビジネスの差別化には直接つながらない機能のアプリ実装✤ 認証✤ スロットリング✤ スケーラビリティの確保✤ etc
インフラ構築✤ インフラの運⽤管理
✤ キャパシティ✤ スケール✤ デプロイ✤ 耐障害性✤ モニタリング✤ ロギング
✤ ビジネスの差別化には直接つながらない機能のアプリ実装✤ 認証✤ スロットリング✤ スケーラビリティの確保✤ etc
不要
不要
不要(各サービスが
適切にハンドリング)
Amazon Cognito
IdP をまたがった認証済みユーザと
ゲストユーザの管理
統合的なアイデンティティの管理
クロスデバイス/クロスプラットフォームなユーザデータの同期
データ同期
AWS サービスへのセキュアなアクセス
AWSへのセキュアなアクセス
GuestYour own auth
Amazon Cognito Identity Amazon Cognito Sync
Amazon Cognitoのこれまで
k/v data
Amazon Cognito SyncUser Data Storage andSync
Any Platform
iOS/Android/FireOS
ユーザのデータ、設定や情報を保存アプリとデバイスのデータをクラウドに保存でき、ログイン後にマージ
クロスデバイス/クロス OS な同期数⾏のコードでデバイスやプラットフォームをまたがってユーザのデータや設定を同期
オフライン動作データは常にローカルの SQLite にまず保存されるので電波が不安定もしくは不通であってもシームレスに動作
k/v data
Identity pool
バックエンド不要スケーラブルで信頼性の⾼いデータ同期基盤をシンプルなクライアント SDK を組み込むだけで利⽤可能
AmazonAPI Gateway
Sign in with Facebook
Or
UsernamePassword
Sign In
Or
Start as a guest
Amazon Cognito Identity統合的なアイデンティティと AWS サービスへの
セキュアなアクセス
サードパーティのアイデンティティプロバイ
ダによる認証
Amazon Cognito Identity
ゲストアクセス
独⾃の認証システムによる認証
AWS リソースへセキュアにアクセスするための⼀時的な認証情報を提供
AmazonDynamoDB
Amazon S3
ID プロバイダゲストアクセス独⾃認証システム
ユニーク ID
Joe Anna Bob
デバイスプラットフォーム
AWS サービス
複数の ID プロバイダをサポートID プロバイダと簡単に連携して認証Amazon, Facebook, Twitter, Google, OpenID Connect などに対応
ユニークなアイデンティティ認証済ユーザに対してユニークIDを割り当て、デバイスやプラットフォームをまたがって認識と管理
Amazon Cognito Identity
Mobile Analytics
S3 DynamoDB Kinesis
容易なセキュリティのベストプラクティス実装モバイルデバイスから AWS リソースへのセキュアなアクセスのためのやり取りをIAMと連携して簡略化
Amazon Cognitoの認証フロー
Amazon Cognito ID(Temp Credentials)
Amazon DynamoDB
End Users
Developer
App with AWS Mobile SDK
Accessto AWS Services
Amazon Cognito Identity Broker
User Name Password
Amazon Cognito ID, Temp Credentials
Amazon S3
Amazon Mobile Analytics
Amazon Cognito Sync Store
AWS Management
Console
TokenPool ID
Role ARNs
User Authentication System
(Running on AWS or not)
Token
未認証ユーザのゲストアクセス(Unauthenticated Identities)✤ ID プロバイダで認証をしていないユーザをゲスト
ユーザとしてユニーク ID の付与と管理✤ 未認証の場合、ID はデバイスと紐づくので同⼀デバイスから
のアクセスの場合に同⼀ユーザとして認識される✤ 未認証によるアクセスを許可しない設定も可能
✤ アプリや AWS リソースへのアクセスにアカウントの作成や認証が不要✤ アクセス権限は未認証ユーザに対して割り当てた IAM Role の
ポリシーに基づく✤ センサーデバイス等のスクリーンや⼊⼒装置のないデバイス
に対してもユニーク ID の付与と管理が可能
✤ データはクラウド上に保存され後からログインした場合は⾃動でマージ
VisitorPreferences
Cognito Store
Guest
EC2 S3 DynamoDB Kinesis
(参考)OpenID Connect✤ 2014年2⽉に最終承認された ID 連携に関する仕様
✤ 準拠している ID プロバイダを Cognito でも利⽤可能例:Salesforce, Ping Identity, Google etc…
Amazon Cognito Identity統合的なアイデンティティとAWSサービスへの
セキュアなアクセス
サードパーティのアイデンティティプロバイ
ダによる認証
Developer Authenticated Identities
ゲストアクセス
独⾃の認証システムによる認証
Sign in with Facebook
Or
UsernamePassword
Sign In
Or
Start as a guest
独⾃形式のユーザ ID で認証したい場合、認証システムを実装して連携することで可能
Developer Authenticated Identity
UsernameAnd Password
独⾃認証システム
パブリック ID プロバイダの併⽤Cognito の ID を元にパブリックな ID プロバイダと独⾃認証を併⽤して管理することも可能
認証基盤の実装が必要GetOpenIdTokenForDeveloperIdentity() を実装する既存の認証基盤を使う場合、改修が必要
独⾃認証システムの利⽤パブリックなIDプロバイダではなく独⾃のUsername と Password を使って認証
Amazon Cognitoの認証フロー(Developer Authenticated Identities)
Amazon Cognito ID(Temp Credentials)
Amazon DynamoDB
End Users
Developer
App with AWS Mobile SDK
Accessto AWS Services
Amazon Cognito Identity Broker
Get OpenID Token
User Name Password
Amazon Cognito ID, Temp Credentials
Amazon S3
Amazon Mobile Analytics
Amazon Cognito Sync Store
AWS Management
Console
OIDC TokenPool ID
Role ARNs
独⾃認証システム(AWS上で稼働していなくてもOK)
OIDC Token
OIDC Token
Photo credit: jerryfergusonphotography via Visualhunt / CC BY
Developer Authenticated Identitiesの課題
✤ 開発者は「付加価値を⽣まない重労働」に従事しなければいけない✤ディレクトリの構築と維持✤セキュリティ権限の取得✤パスワード紛失といったワーク
フローのサポート✤ユーザベースの成⻑にあわせた
スケール
Developer Authenticated Identities の課題
Amazon Cognito Identity User Pools (Beta)
モバイルおよび Web アプリにサインアップとサインイ
ンの機能を簡単に追加
ユーザ管理を簡単に
電話番号や email アドレスの検証と多要素認証の提供
拡張されたセキュリティ機能
数億のユーザまでスケールするユーザディレクトリを作成・管理するシンプル、セキュア、低コストでフル
マネージドなサービス
マネージド型ユーザディレクトリ
幅広いユーザシナリオ
Email もしくは電話番号による確認
パスワード紛失
ユーザのサインアップとサインイン
アカウントを確認するためのEmail アドレスや電話番号の検証
パスワードを紛失した場合にユーザは⾃分⾃⾝でパスワード変更可能
Email、電話番号もしくはユーザ名とパスワードを使⽤したサインアップサインアップ後のサインイン
ユーザプロファイル カスタム属性を含むユーザプロファイルの取得と更新
SMS ベースの MFA 有効にすると、サインアップ、パスワード紛失におけるフローの⼀環としてSMS を通じた確認コードによる多要素認証(MFA)を利⽤可能
幅広い管理者シナリオ
ユーザプール内のユーザ管理
Email と電話番号の確認
AWS Lambda によるカスタマイズ
パスワードポリシーのセットアップ
ユーザプールの作成と管理
ユーザプール内の特定ユーザのリスト、検索、アクション実⾏
アカウントの有効化前に SMS を通じてユーザの email アドレスと電話番号を検証する設定(SMS経由)
ワークフローをカスタマイズするためにAWS Lambda のファンクションを作成
最⼩⽂字数、⼤⽂字、特殊⽂字を含めるといったパスワード要件のコントロール
AWS アカウント内に複数のユーザプールを作成、構成、削除可能
属性の定義 必要な属性の選択とカスタムユーザ属性の定義
セキュアなサインインを簡単に
トークンベースの認証
Secure Remote Password プロトコル
SMS ベースの多要素認証(MFA)
OpenID Connect (OIDC) とOAuth2.0の標準をベースとしたトークンを利⽤
end to end でセキュアにパスワードを取り扱うために Secure Remote Password (SRP) プロトコルを使⽤
セキュリティの外部レイヤとして携帯電話のテキストメッセージ機能をエンドユーザが利⽤可能
Amazon Cognitoと統合されたアイデンティティ
Amazon CognitoUser Pool
User
サインイン1
アクセストークンと ID トークンの返却
2
Amazon Cognito -Federated Identities(Identity Pool)AWS内の認証情報を
取得
3
AWSサービスへのアクセス
4
AmazonDynamoDB
AmazonS3
AmazonAPI Gateway
ユーザ属性✤ 標準で⽤意されている16種類の属性に加え最⼤25個まで任意のカスタ
ム属性を追加可能✤ 標準で⽤意されている属性は設定で required にチェックを⼊れるとサ
インアップ時に必須な情報となる✤ Email や電話番号を使ってサインインしたい場合はエイリアスを利⽤
する✤ カスタム属性
✤⽂字列もしくは数値で定義可能✤最⼤/最⼩⽂字数を設定可能✤暗号化され、検索不可
ユーザ属性属性名 エイリアス利⽤化 備考address
birth_date
email ✓ 検証可能family_name
gender
given_name
locale
middle_name
nickname
phone_number ✓ 検証可能国番号が必須(+81など)ハイフン不要
picture
preferred_username ✓ reqiuredとariasの両選択は不可profile
timezone
username プール内でユニークであること常に必須
website
パスワードポリシーの設定✤ よくあるパスワードポリシーを設定可能
✤最⼩⽂字数(6⽂字以上)✤⼤⽂字が必ず含まれること✤数字が必ず含まれること✤以下の特殊⽂字が必ず含まれること
^ $ * . [ ] { } ( ) ? - “ ! @ # % & / , > < ‘ : ; | _ ~ `
Email と電話番号の検証✤ 検証コードを Email もしくは SMS で送信することで⾃動的に有効性
を検証可能✤ 設定を有効にしておくとユーザ登録時もしくは「email」もしくは
「phone_number」の値が追加された時に⾃動で送信される✤ クライアントアプリ側では検証コードが必要かどうかが判別可能なの
でユーザに検証コードを促す UI を⽤意する✤ Email や電話番号を使わずに独⾃の⽅法で検証したい場合は「pre-
signup」フックと AWS Lambda を利⽤する
MFA(Multi Factor Authentication)✤ SMS を利⽤した多要素認証をサポート✤ 必須にすることもユーザに選択させることも可能✤ MFAを有効にした場合は「phone_number」が必須になる✤ クライアントアプリでサインイン時にユーザ名とパスワードだけでな
くコード⼊⼒の UI を⽤意する✤ ベータ期間中は SMS の送信元番号は変更不可
AWS Lambda を使ったカスタマイズ
AWS Lambda フック 例
Pre user sign-upサインアップリクエストを許可/拒否するためのカスタムバリデーション
Custom message検証メッセージのカスタマイズとローカライズ
Pre user sign-inサインインリクエストの拒否/許可するためのカスタムバリデーション
Post user sign-in カスタム分析のためのイベントロギング
Post user confirmationウェルカムメッセージやカスタム分析のためのイベントロギング
Pricing✤ MAU(Monthly Active User)に基いて課⾦
✤サインアップ、サインイン、トークンの更新またはパスワードの変更などの操作が発⽣したユーザ
✤ 50000 MAUの無料利⽤枠
MAU MAUあたりの料⾦最初の 50,000 MAU まで 無料
次の 50,000 MAU まで 0.00550 USD
次の 900,000 MAU まで 0.00460 USD
次の 9,000,000 MAU まで 0.00325 USD
10,000,000 MAU を超える分 0.00250 USD
Demo
Photo credit: rolands.lakis via VisualHunt.com / CC BY
資料の配置場所✤ AWS クラウドサービス活⽤資料集
✤ http://aws.amazon.com/jp/aws-jp-introduction/
✤ AWS Solutions Architect ブログ✤最新の情報、セミナー中のQ&A等が掲載されています✤ http://aws.typepad.com/sajp/
公式Twitter/FacebookAWSの最新情報をお届けします
@awscloud_jp検索
最新技術情報、イベント情報、お役⽴ち情報、お得なキャンペーン情報などを⽇々更新しています!
もしくはhttp://on.fb.me/1vR8yWm