Black Belt Online Seminar Amazon Cognito

  • View
    2.389

  • Download
    3

  • Category

    Internet

Preview:

Citation preview

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

Recommended