Google Identity Toolkit から Google Cloud Identity Platform に移行する

Google Identity Toolkit の最新バージョンは、Identity PlatformFirebase Authentication としてリリースされています。今後、Identity Toolkit での機能の開発は凍結する。すべて新規 Identity Platform と Firebase で機能開発を行います。 認証。Identity Toolkit のデベロッパーは、アプリケーションで実用的になる限り早く、これらのプラットフォームに移行することをおすすめします。

新機能

Identity Platform には、Google Identity Toolkit よりも大幅に機能が強化されています。

  • 新しい管理コンソール

    Identity Platform には 新しいデベロッパー コンソール ユーザーを表示、変更、削除できます。これが役に立つかもしれません ログインと登録のフローをデバッグできますコンソールでは、認証方法の構成やメール テンプレートのカスタマイズも行えます。

  • 新しい認証方法

    Identity Platform は、SAML や Cloud Identity などのエンタープライズ フェデレーション標準を OIDC。SaaS アプリとサービスをスケーリングできます。Identity Platform は、GitHub、Microsoft、Yahoo などのプロバイダもサポートしています。匿名ログインを使用すると、ユーザー名を指定せずに一意のユーザー ID を作成できます。 ユーザーにログインまたは登録のプロセスを義務付けること。これにより、 通常のユーザーの場合と同じように、認証済みの API 呼び出しを行うことができます。日時 ユーザーがアカウント登録を決断した場合、すべてのアクティビティは 同じユーザー ID である必要があります。これは、サーバーサイド ショッピングのような場合に有用です。 送信前にユーザーに働きかけたい 登録フローを進めます

  • サービスレベル契約と Cloud サポートで信頼性の高いスケーリングを実現

    Identity Platform は信頼できる Google インフラストラクチャ上に構築されており、 サービスレベル契約 Google Cloud のサポートを受けられます。つまり、任意の量のサービスをスケールして、 実現できます。また、復元力、可用性、可用性は Google に スケーラビリティとスケーラビリティを 確保できます

  • Firebase のすべてにアクセス

    Firebase は、高品質のアプリケーションをすばやく開発できるモバイル プラットフォームです。 ユーザーベースを拡大して収益を増やすことができます。Firebase を構成するのは さまざまな組み合わせが用意されており、ニーズや 次のインフラストラクチャを含む: モバイル 分析 クラウド メッセージングRealtime Database の場合 ファイル ストレージ静的ホスティングリモート構成、 モバイル クラッシュ レポート Android のテスト

  • 更新された UI

    Google の最新の UX に基づいて UI フローを完全に再構築 あります。これには、パスワードの復元、アカウントのリンク、新しいアカウントと既存のアカウントの区別フローが含まれます。これらのフローのコード化とデバッグには、多くの場合、かなりの時間がかかることがあります。Android の Smart Lock for Passwords が統合されており、参加しているアプリのログインと登録のコンバージョンが大幅に改善されています。アプリケーションに合わせてテーマを簡単に変更でき、 カスタマイズ性が最大限に高まるため、Android および iOS オープンソース化されています。

  • サーバー設定の簡素化

    Identity Toolkit では、多くのデベロッパーがメールによる復元フローを実装しなかったため、ユーザーがパスワードを忘れた場合にアカウントを復元できなくなっていました。Identity Platform は、 電子メールの確認、パスワードのリセット、パスワードの変更に関するメッセージを ユーザーとテキストを簡単にカスタマイズできる 提供しますまた、インフラストラクチャを UI ウィジェット: リダイレクトと パスワードの変更操作を完了できます。

  • 新しい SDK

    Identity Toolkit のすべてのサーバー API は、 クライアント ライブラリ(Android、iOS、ウェブ)デベロッパーは、固定の UI に縛られることなく、新規ユーザーと既存ユーザーのログインと登録、ユーザー プロパティへのアクセス、アカウントのリンク、更新、削除、パスワードのリセットなどを行えるようになります。必要に応じて、この API 上に独自のログイン フロー全体とエクスペリエンスを手動で構築することもできます。

  • モバイルアプリのセッション管理

    Identity Toolkit では、アプリは Identity Toolkit からの最初の認証イベントに基づいて独自のセッション状態を作成していました。Identity Platform は 認証から作成された更新トークンを受け取るバックエンド サービス そのトークンと引き換えに、Android、iOS、 JavaScriptユーザーがパスワードを変更しても、更新トークンは 新しいアクセス トークンを生成できなくなります。これにより、次の期間までアクセスが そのデバイスでユーザーが再認証を行います。

機能の違い

現在、Identity Toolkit では一部の Identity Toolkit 機能を使用できない 他の機能は再設計され、動作が異なります。 これらの機能が重要な業務である場合は、すぐには移行しないことをおすすめします 説明します。多くの場合、こうした機能はアプリや 簡単なフォールバックによって移行を進めることができます。

サーバーサイドの違い

Identity Toolkit のコアサービスとその基盤となる REST API は、 検証ロジック、プライマリ ユーザーのデータベースはマイナー アップデートのみ加えられました。 ただし、一部の機能と、Identity Platform をサービスに統合する方法は変更されています。

  • ID プロバイダ

    PayPal と AOL はサポートされていません。これらの IDP のアカウントを持つユーザーは、パスワード復元フローでアプリにログインし、アカウントのパスワードを設定できます。

  • サーバー ライブラリ

    現在、Java、Node.js、Python、Go、C# 用の Admin SDK があります。

  • アカウント管理に関するメール

    パスワードの再設定、メール確認、メール変更のメッセージは、Firebase またはデベロッパー独自のメールサーバーから送信できます。現在、メール テンプレートの UI からカスタマイズできるのは限定的ですが、Admin SDK を使用してさらにカスタマイズできます。

  • メールアドレス変更の確認

    Identity Toolkit では、ユーザーがメールアドレスを変更すると、メールアドレス変更フローを続行するためのリンクが記載されたメールが新しいアドレスに送信されます。

    Firebase は、変更を元に戻すためのリンクが記載された取り消しメールを古いメールアドレスに送信することで、メールアドレスの変更を確認します。

  • IdP のロールアウト

    Identity Toolkit にはログインに ID プロバイダを追加する機能があった テストできます。テストすることで、 サポート リクエストを受け付けています。この機能は Firebase Authentication で削除されました。

クライアントサイドの違い

Identity Platform では、Google Identity Toolkit が提供する機能は次の 2 つのコンポーネントに分かれています。

  • クライアント SDK とサーバー SDK

    Identity Platform では、Identity Toolkit の REST API によって提供される機能が、Android、iOS、JavaScript で利用可能なクライアント SDK にパッケージ化されています。SDK を使用すると、REST 呼び出しを介してバックエンド サービスと通信する代わりに、クライアント SDK を使用してユーザーのログインと登録、ユーザー プロファイル情報へのアクセス、アカウントのリンク、更新、削除、パスワードのリセットを行うことができます。

  • UI ウィジェット

    ログイン、登録、パスワードの復元、アカウントのリンクを管理するすべての UI フローは、クライアント SDK を使用して再構築され、ログイン ウィジェットとしてパッケージ化されています。これらのプロダクトは、オープンソース SDK として iOS, Android Web、 BigQuery では不可能な方法でフローを完全にカスタマイズできます。 説明します。

その他の相違点は次のとおりです。

  • セッションと移行

    Identity Toolkit と Identity ではセッションの管理方法が異なるため プラットフォーム、つまり既存のセッションは アップグレードが必要となり、ユーザーは再度ログインする必要があります。

始める前に

Identity Toolkit から Identity Platform に移行する前に、 要件:

  1. Cloud コンソールを開き、Identity Toolkit プロジェクトを選択します。

  2. Marketplace で Identity Platform [Identity Platform を有効にする] を

  3. サービス アカウント] ページを開きます。ここには、作成したサービス アカウントが Identity Toolkit 用に構成されています

  4. サービス アカウントの横にある > [キーを作成] をクリックします。次に、 [Create private key] ダイアログで [Key type] を [JSON] に設定して、 作成:サービス アカウントの認証情報を含む JSON ファイルは、 自動的にダウンロードされます。これは、次のステップで SDK を初期化する際に必要になります。

  5. Cloud コンソールに戻ります。 [プロバイダ] セクションの [メール/パスワード] 欄ログイン方法、 [メール テンプレート] ページを開きます。その後、アプリのテンプレートをカスタマイズできます。

    Identity Toolkit では、ユーザーがパスワードの再設定、メールアドレスの変更、 メールアドレスが確認済みであった場合、 ユーザーにメールでコードを送信します。 Identity Platform は、構成したテンプレートに基づいてメールを送信します。追加の操作は必要ありません。

  6. 省略可: 使用しているサービスから Identity Platform サービスに Firebase SDK をインストールします。

    1. Node.js Admin SDK は、npm を使用してインストールできます。

      $ npm init
      $ npm install --save firebase-admin
      
    2. コード内で、次のコマンドを使用して Firebase にアクセスできます。

      var admin = require('firebase-admin');
      var app = admin.initializeApp({
        credential: admin.credential.cert('path/to/serviceAccountCredentials.json')
      });
      

次に、アプリのプラットフォーム(AndroidiOSウェブ)の移行手順を完了します。

サーバーおよび JavaScript

主な変更点

Identity Platform のウェブ実装には、Identity Toolkit と多くの違いがあります。

  • ウェブ セッションの管理

    これまでは、ユーザーが Identity Toolkit ウィジェット ユーザーに設定された Cookie によって、 セッションをブートストラップする。 この Cookie の有効期間は 2 週間で、ユーザーがアカウント管理ウィジェットを使用してパスワードとメールアドレスを変更できるようにするために使用されていました。一部のサイトでは、この Cookie を使用して、サイト上の他のすべてのページ リクエストを認証していました。他のサイトでは、独自の Cookie を作成するために Cookie を使用しています Cookie 管理システムを使用して行われます。

    Identity Platform Client SDK は、ID トークンを管理し、Identity Platform のバックエンドと連携してセッションを最新の状態に保ちます。バックエンドは、重要なアカウント変更(ユーザーのパスワードの変更など)が発生するとセッションを期限切れにする。ID トークンはウェブ クライアントで Cookie として自動的に設定されず、有効期間は 1 時間のみです。これを行わない場合、 セッションを 1 時間のみに制限したい場合は、ID トークンを すべてのページ リクエストを検証するための Cookie として使用されます。代わりに、ユーザーがログインしたときにリスナーを設定し、ID トークンを取得してトークンを検証し、フレームワークの Cookie 管理システムを使用して独自の Cookie を作成する必要があります。

    Cookie のセッション存続期間は、 セキュリティに関するニーズを満たすことができます。

  • ウェブでのログインフロー

    以前は、ログインしたときにユーザーが accountchooser.com にリダイレクトされていました。 ユーザーが使いたい識別子を学習しました。Identity Platform UI のフローは、ログイン方法のリスト(メールアドレスや電話番号など)から始まります。 このオプションでは、ウェブ用の accountchooser.com に移動し、 hintRequest API: Android。また、UI でメールアドレスを入力する必要がなくなりました。これにより、匿名ユーザー、カスタム認証ユーザーのサポートが容易になります。 または、メールアドレスが不要なプロバイダからのユーザーです。

  • アカウント管理ウィジェット

    このウィジェットには、ユーザーがメールアドレスの変更、パスワードの変更、ID プロバイダとのアカウントのリンク解除を行うための UI が用意されています。現在開発中です。

  • ログイン ボタン / ウィジェット

    ログインボタンやユーザーカードなどのウィジェットは提供されなくなりました。。 Firebase Authentication API を使用して非常に簡単に構築できます。

  • signOutUrl がない

    firebase.auth.signOut() を呼び出してコールバックを処理する必要があります。

  • oobActionUrl なし

    メールの送信は Identity Platform によって処理されるようになりました。また、 Firebase コンソール。

  • CSS のカスタマイズ

    UI ウィジェットは Material Design Lite スタイル設定を使用しており、マテリアル デザインのアニメーションが動的に追加されます。

ステップ 1: サーバーコードを変更する

  1. サーバーが Identity Toolkit トークン(2 週間有効)を使用していて、 管理するには、独自のユーザー セッションを使用するようにサーバーを変換し、 セッション Cookie です。

    1. エンドポイントを実装する ID トークンの検証 ユーザーのセッション Cookie を設定しますクライアント アプリが このエンドポイントへの Firebase ID トークン。
    2. 受信リクエストに独自のセッション cookie が含まれている場合は、ユーザーが認証されていると見なすことができます。一致しない場合は、リクエストを未認証として扱います。
    3. ログイン中の既存のセッションをユーザーが失わないようにするには、すべての Identity Toolkit トークンが期限切れになるまで 2 週間待つか、以下のステップ 3 で説明するように、ウェブアプリの二重トークン検証も行います。
  2. 次に、ID トークンは Identity Toolkit トークンと異なるため、トークン検証ロジックを更新する必要があります。 Admin SDK サーバーに送ります。Admin SDK でサポートされていない言語を使用している場合は、 JWT トークン検証ライブラリをダウンロードする 適切に保護できるのかについて トークンを検証する

  3. 上記の更新を最初に行うとき、まだ定義されていないコードパスが Identity Toolkit トークンを使用します。iOS または Android のアプリを使用している場合、新しいコードパスを機能させるには、ユーザーがアプリの新しいバージョンにアップグレードする必要があります。ユーザーにアプリの更新を強制しない場合は、トークンを調べて、Firebase SDK と Identity Toolkit SDK のどちらを使用してトークンを検証する必要があるかを判断するサーバー検証ロジックを追加できます。ウェブ アプリケーションのみを使用している場合、新しい認証リクエストはすべて Identity Platform に移行されるため、ID トークン確認方法のみを使用する必要があります。

ウェブ API リファレンスをご覧ください。

ステップ 2: HTML を更新する

  1. 初期化コードをアプリに追加します。

    1. Google Chat でプロジェクトを開きます。 Cloud コンソール
    2. プロバイダ [アプリケーション設定の詳細] をクリックします。Identity Platform を初期化するコード スニペットが表示されます。
    3. 初期化スニペットをコピーしてウェブページに貼り付けます。
  2. アプリに認証ウィジェットを追加します。

    <script src="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.js"></script>
    <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.css" />
    <!-- *******************************************************************************************
       * TODO(DEVELOPER): Paste the initialization snippet from:
       * Firebase Console > Overview > Add Firebase to your web app. *
       ***************************************************************************************** -->
    <script type="text/javascript">
      // FirebaseUI config.
      var uiConfig = {
        'signInSuccessUrl': '<url-to-redirect-to-on-success>',
        'signInOptions': [
          // Leave the lines as is for the providers you want to offer your users.
          firebase.auth.GoogleAuthProvider.PROVIDER_ID,
          firebase.auth.FacebookAuthProvider.PROVIDER_ID,
          firebase.auth.TwitterAuthProvider.PROVIDER_ID,
          firebase.auth.GithubAuthProvider.PROVIDER_ID,
          firebase.auth.EmailAuthProvider.PROVIDER_ID
        ],
        // Terms of service url.
        'tosUrl': '<your-tos-url>',
      };
    
      // Initialize the FirebaseUI Widget using Firebase.
      var ui = new firebaseui.auth.AuthUI(firebase.auth());
      // The start method will wait until the DOM is loaded.
      ui.start('#firebaseui-auth-container', uiConfig);
    </script>
    
  3. アプリから Identity Toolkit SDK を削除します。

  4. セッション管理に Identity Toolkit ID トークンを使用している場合は、 クライアントサイドで次の変更を行う必要があります。

    1. Identity Platform で正常にログインしたら、次の方法で ID トークンを取得します。 firebase.auth().currentUser.getToken() を呼び出しています。

    2. ID トークンをバックエンド サーバーに送信し、検証して独自のセッション クッキーを発行します。

      機密性の高いオペレーションを実行する場合や、認証済みの編集リクエストをサーバーに送信する場合は、セッション Cookie にのみ依存しないでください。クロスサイト リクエスト フォージェリ(CSRF)の保護を追加する必要があります。

      フレームワークで CSRF の保護が提供されていない場合、 ログイン ユーザーの ID トークンを取得し getToken() で指定し、各リクエストにトークンを含めます( デフォルトで Cookie も送信されます)。その後、バックエンド フレームワークが完了したセッション Cookie チェックに加えて、Admin SDK を使用してそのトークンを検証します。これにより、ID トークンはウェブ ストレージを使用してのみ保存され、Cookie には保存されないため、CSRF 攻撃の成功が難しくなります。

    3. Identity Toolkit トークンの有効期間は 2 週間です。2 週間有効なトークンを継続して発行することも、アプリのセキュリティ要件に基づいてトークンの有効期間を長くしたり短くしたりすることもできます。ユーザーがログアウトすると、セッション クッキーを削除します。

ステップ 3: IDP のリダイレクト URL を更新する

  1. Cloud コンソールで、[プロバイダ] セクションを開きます。

  2. サポートするフェデレーション ログイン プロバイダごとに、次の操作を行います。

    1. ログイン プロバイダの名前をクリックします。
    2. OAuth リダイレクト URI をコピーします。
    3. ログイン プロバイダのデベロッパー コンソールで、OAuth リダイレクト URI を更新します。

Android

ステップ 1: Firebase を使用してアプリに Identity Platform を追加する

  1. アプリ Cloud コンソール Identity Toolkit プロジェクトを選択します。

  2. [プロバイダ] ページで [アプリケーションの設定の詳細] をクリックし、[Android] タブを選択して、[Firebase で開始] をクリックします。[Firebase を追加] ダイアログで、アプリのパッケージ名と署名証明書フィンガープリントを指定し、[アプリを追加] をクリックします。google-services.json 構成ファイルがパソコンにダウンロードされます。

  3. 構成ファイルを Android アプリ モジュールのルート ディレクトリにコピーします。この構成ファイルには、プロジェクトと Google OAuth クライアントの情報が含まれています。

  4. プロジェクト レベルの build.gradle ファイル (<var>your-project</var>/build.gradle)を使用するには、アプリのパッケージ名を defaultConfig セクション:

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. また、プロジェクト レベルの build.gradle ファイルで、含める依存関係を追加します。 google-services プラグイン:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. アプリのアプリレベルの build.gradle ファイル(<var>my-project</var>/<var>app-module</var>/build.gradle)で、Android Gradle プラグインの後に次の行を追加して、google-services プラグインを有効にします。

    apply plugin: 'com.android.application'
    // Add this line
    apply plugin: 'com.google.gms.google-services'
    

    google-services プラグインは、google-services.json ファイルを使用して構成します。 アプリケーションを Firebase で使用できます。

  7. また、アプリレベルの build.gradle ファイルで、Firebase Authentication を追加します。 :

    compile 'com.google.firebase:firebase-auth:23.0.0'
    compile 'com.google.android.gms:play-services-auth:21.2.0'
    

ステップ 2: Identity Toolkit SDK を削除する

  1. AndroidManifest.xml ファイルから Identity Toolkit 構成を削除します。この情報は google-service.json ファイルに含まれ、google-services プラグインによって読み込まれます。
  2. アプリから Identity Toolkit SDK を削除します。

ステップ 3: アプリに FirebaseUI を追加する

  1. FirebaseUI Auth を追加する 追加できます

  2. アプリで、Identity Toolkit SDK の呼び出しを FirebaseUI の呼び出しに置き換えます。

iOS

ステップ 1: Firebase をアプリに追加する

  1. 次のコマンドを実行して、クライアント SDK をアプリに追加します。

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. アプリ Cloud コンソール Identity Toolkit プロジェクトを選択します。

  3. [Provider] ページで [Application setup details] をクリックし、[iOS] タブを選択して、[Get Started in Firebase] をクリックします。[Firebase を追加] ダイアログで、アプリのパッケージ名と署名証明書フィンガープリントを指定し、[アプリを追加] をクリックします。google-services.json 構成ファイルがコンピュータにダウンロードされます。[Firebase を追加] ダイアログで、アプリのバッチ ID と App Store ID を指定し、[アプリを追加] をクリックします。GoogleService-Info.plist 構成ファイルがパソコンにダウンロードされます。プロジェクトに複数のバンドル ID がある場合は、各バンドル ID に独自の GoogleService-Info.plist ファイルを設定できるように、Firebase コンソールで各バンドル ID を接続する必要があります。

  4. 構成ファイルを Xcode プロジェクトのルートにコピーし、 あります。

ステップ 2: Identity Toolkit SDK を削除する

  1. アプリの Podfile から GoogleIdentityToolkit を削除します。
  2. pod install コマンドを実行します。

ステップ 3: アプリに FirebaseUI を追加する

  1. FirebaseUI Auth を追加する 追加できます

  2. アプリで、Identity Toolkit SDK の呼び出しを FirebaseUI の呼び出しに置き換えます。