メインコンテンツまでスキップ
新しい友達のために:

Logto は、モダンなアプリや SaaS 製品向けに設計された Auth0 の代替です。 Cloudオープンソース の両方のサービスを提供し、アイデンティティと管理 (IAM) システムを迅速に立ち上げるのに役立ちます。認証 (Authentication)、認可 (Authorization)、マルチテナント管理を すべて一つに まとめて楽しんでください。

Logto Cloud で無料の開発テナントから始めることをお勧めします。これにより、すべての機能を簡単に探索できます。

この記事では、Capacitor JSLogto を使用して、Google サインイン体験(ユーザー認証 (Authentication))を迅速に構築する手順を説明します。

前提条件

  • 稼働中の Logto インスタンス。紹介ページ をチェックして始めてください。
  • Capacitor JS の基本的な知識。
  • 使用可能な Google アカウント。

Logto でアプリケーションを作成する

Logto は OpenID Connect (OIDC) 認証 (Authentication) と OAuth 2.0 認可 (Authorization) に基づいています。これは、複数のアプリケーション間でのフェデレーテッドアイデンティティ管理をサポートし、一般的にシングルサインオン (SSO) と呼ばれます。

あなたの ネイティブアプリ アプリケーションを作成するには、次の手順に従ってください:

  1. Logto コンソール を開きます。「Get started」セクションで、「View all」リンクをクリックしてアプリケーションフレームワークのリストを開きます。あるいは、Logto Console > Applications に移動し、「Create application」ボタンをクリックします。 Get started
  2. 開いたモーダルで、左側のクイックフィルターチェックボックスを使用して、利用可能なすべての "ネイティブアプリ" フレームワークをフィルタリングするか、"ネイティブアプリ" セクションをクリックします。"Capacitor JS" フレームワークカードをクリックして、アプリケーションの作成を開始します。 Frameworks
  3. アプリケーション名を入力します。例:「Bookstore」と入力し、「Create application」をクリックします。

🎉 タダーン!Logto で最初のアプリケーションを作成しました。詳細な統合ガイドを含むお祝いページが表示されます。ガイドに従って、アプリケーションでの体験を確認してください。

Capacitor JS SDK を統合する

ヒント:
  • 次のデモンストレーションは、Capacitor JS 5.0.6 に基づいています。

インストール

お気に入りのパッケージマネージャーを使用して Logto SDK とピア依存関係をインストールします:

npm i @logto/capacitor
npm i @capacitor/browser @capacitor/app @capacitor/preferences

@logto/capacitor パッケージは Logto の SDK です。残りのパッケージはそのピア依存関係です。

Logto クライアントの初期化

次のコードを Capacitor プロジェクトに追加します:

import LogtoClient, { type LogtoConfig } from '@logto/capacitor';

const logtoConfig: LogtoConfig = {
endpoint: '<your-logto-endpoint>',
appId: '<your-application-id>',
};

const logtoClient = new LogtoClient(config);

サインインの実装

詳細に入る前に、エンドユーザーの体験について簡単に説明します。サインインプロセスは次のように簡略化できます:

  1. あなたのアプリがサインインメソッドを呼び出します。
  2. ユーザーは Logto のサインインページにリダイレクトされます。ネイティブアプリの場合、システムブラウザが開かれます。
  3. ユーザーがサインインし、あなたのアプリにリダイレクトされます(リダイレクト URI として設定されています)。

リダイレクトベースのサインインについて

  1. この認証 (Authentication) プロセスは OpenID Connect (OIDC) プロトコルに従い、Logto はユーザーのサインインを保護するために厳格なセキュリティ対策を講じています。
  2. 複数のアプリがある場合、同じアイデンティティプロバイダー (Logto) を使用できます。ユーザーがあるアプリにサインインすると、Logto は別のアプリにアクセスした際に自動的にサインインプロセスを完了します。

リダイレクトベースのサインインの理論と利点について詳しく知るには、Logto サインイン体験の説明を参照してください。


次に、リダイレクト URI を設定しましょう。リダイレクト URI は、認証 (Authentication) フローの後にユーザーをアプリケーションに戻すために使用されます。

URI が Capacitor アプリにリダイレクトすることを確認してください。例えば、com.example.app://callback のようにします。この値は、Capacitor アプリの設定によって異なる場合があります。詳細については、Capacitor Deep Links を参照してください。

次に、サインインボタンの onClick ハンドラーに次のコードを追加します:

const onClick = async () => {
await logtoClient.signIn('com.example.app://callback');
console.log(await logtoClient.isAuthenticated()); // true
console.log(await logtoClient.getIdTokenClaims()); // { sub: '...', ... }
};

サインアウトの実装

Capacitor は iOS では Safari View Controller、Android では Chrome Custom Tabs を利用しているため、認証 (Authentication) 状態はしばらく保持されることがあります。しかし、ユーザーがすぐにアプリケーションからサインアウトしたい場合もあります。この場合、signOut メソッドを使用してユーザーをサインアウトできます:

const onClick = async () => {
await logtoClient.signOut();
console.log(await logtoClient.isAuthenticated()); // false
};

signOut メソッドには、サインアウト後のリダイレクト URI のオプションパラメータがあります。指定されていない場合、ユーザーは Logto のサインアウトページにリダイレクトされます。

ユーザーは「完了」をクリックしてウェブビューを閉じ、Capacitor アプリに戻る必要があります。ユーザーを自動的に Capacitor アプリに戻したい場合は、サインアウト後のリダイレクト URI を指定できます。例えば、com.example.app://callback/sign-out のようにします。

サインアウト後のリダイレクト URI が Capacitor アプリにリダイレクトできることを確認してください。次に、サインアウトボタンの onClick ハンドラーに次のコードを追加します:

const onClick = async () => {
await logtoClient.signOut('com.example.app://callback/sign-out');
};

チェックポイント: 認証 (Authentication) フローをトリガーする

Capacitor アプリを実行し、サインインボタンをクリックします。ブラウザウィンドウが開き、Logto のサインインページにリダイレクトされます。

ユーザーが認証 (Authentication) フローを完了せずにブラウザウィンドウを閉じた場合、Capacitor アプリは LogtoClientError を受け取ります。

Google コネクターを追加する

迅速なサインインを有効にし、ユーザーコンバージョンを向上させるために、アイデンティティプロバイダー (IdP) として Capacitor JS を接続します。Logto ソーシャルコネクターは、いくつかのパラメーター入力を許可することで、この接続を数分で確立するのに役立ちます。

ソーシャルコネクターを追加するには、次の手順に従ってください:

  1. Console > Connectors > Social Connectors に移動します。
  2. 「Add social connector」をクリックし、「Google」を選択します。
  3. README ガイドに従い、必要なフィールドを完了し、設定をカスタマイズします。
Connector tab
注記:

インプレースコネクターガイドに従っている場合は、次のセクションをスキップできます。

Google OAuth app を設定する

Google API Console でプロジェクトを設定する

  • Google API Console にアクセスし、Google アカウントでサインインします。
  • 上部メニューバーの プロジェクトを選択 ボタンをクリックし、新しいプロジェクト ボタンをクリックしてプロジェクトを作成します。
  • 新しく作成したプロジェクトで、API とサービス をクリックして API とサービス メニューに入ります。

アプリケーションを設定して登録する

  • 左側の API とサービス メニューで、OAuth 同意画面 ボタンをクリックします。
  • 希望する ユーザータイプ を選択し、作成 ボタンをクリックします。(注:ユーザータイプ として 外部 を選択した場合、後でテストユーザーを追加する必要があります。)

これで アプリ登録の編集 ページに移動します。

アプリ登録の編集

  • 指示に従って OAuth 同意画面 フォームに記入します。
  • 保存して続行 をクリックして続行します。

スコープの設定

  • スコープを追加または削除 をクリックし、ポップアップドロワーで ../auth/userinfo.email../auth/userinfo.profileopenid を選択し、更新 をクリックして完了します。使用する可能性のあるすべてのスコープを追加することをお勧めします。そうしないと、設定で追加した一部のスコープが機能しない場合があります。
  • 必要に応じてフォームに記入します。
  • 保存して続行 をクリックして続行します。

テストユーザーの追加(外部ユーザータイプのみ)

  • ユーザーを追加 をクリックし、テストユーザーを追加して、これらのユーザーがテスト中にアプリケーションにアクセスできるようにします。
  • 保存して続行 をクリックして続行します。

これで Google OAuth 2.0 同意画面が設定されました。

OAuth 2.0 資格情報を取得する

  • 左側の API とサービス メニューで、資格情報 ボタンをクリックします。
  • 資格情報 ページで、上部メニューバーの + 資格情報を作成 ボタンをクリックし、OAuth クライアント ID を選択します。
  • OAuth クライアント ID の作成 ページで、アプリケーションタイプとして ウェブアプリケーション を選択します。
  • アプリケーションの基本情報を入力します。
  • + URI を追加 をクリックして、承認済みの JavaScript オリジン セクションに承認済みドメインを追加します。これは、Logto 認可ページが提供されるドメインです。私たちの場合、これは ${your_logto_origin} になります。例:https://logto.dev
  • 承認済みリダイレクト URI セクションで + URI を追加 をクリックして、承認済みリダイレクト URI を設定します。これは、ログイン後にユーザーをアプリケーションにリダイレクトするものです。私たちの場合、これは ${your_logto_endpoint}/callback/${connector_id} になります。例:https://logto.dev/callback/${connector_id}connector_id は Logto 管理コンソールのコネクター詳細ページの上部バーにあります。
  • 作成 をクリックして完了し、クライアント IDクライアントシークレット を取得します。

コネクターを設定する

前のセクションで言及した OAuth アプリ詳細ページから取得した クライアント IDクライアントシークレットclientIdclientSecret フィールドに入力します。

scope は、スペースで区切られた スコープ のリストです。指定しない場合、スコープはデフォルトで openid profile email になります。

prompts は、必要なユーザーインタラクションのタイプを指定する文字列の配列です。文字列は次のいずれかの値になります:

  • none: 認可サーバーは認証またはユーザー同意画面を表示しません。ユーザーが既に認証されておらず、要求されたスコープに対する事前設定された同意がない場合、エラーを返します。既存の認証および / または同意を確認するために none を使用できます。
  • consent: 認可サーバーは、クライアントに情報を返す前にユーザーに同意を求めます。
  • select_account: 認可サーバーは、ユーザーにユーザーアカウントを選択するよう促します。これにより、認可サーバーに複数のアカウントを持つユーザーが、現在セッションを持つ複数のアカウントの中から選択できるようになります。

設定タイプ

名前タイプ
clientIdstring
clientSecretstring
scopestring
promptsstring[]

Google One Tap を有効にする

Google One Tap は、ユーザーが Google アカウントでウェブサイトやアプリにサインインするための安全で簡単な方法です。

Google コネクターを設定すると、コネクター詳細ページに Google One Tap のカードが表示されます。スイッチを切り替えることで、サインアップおよびサインインページで Google One Tap を有効にできます。

Google One Tap を有効にすると、次のオプションを設定できます:

  • 可能であれば資格情報を自動選択特定の条件が満たされた場合、Google アカウントで自動的にユーザーをサインインします。
  • ユーザーが外側をクリック / タップした場合、プロンプトをキャンセル:ユーザーがプロンプトの外側をクリックまたはタップした場合、Google One Tap プロンプトを閉じます。無効にすると、ユーザーはプロンプトを閉じるために閉じるボタンをクリックする必要があります。
  • ITP ブラウザでのアップグレードされた One Tap UX を有効にする:インテリジェントトラッキング防止 (ITP) ブラウザでアップグレードされた Google One Tap ユーザーエクスペリエンスを有効にします。詳細については このページ を参照してください。
注意:

サーバーのオリジンを OAuth 同意画面設定の 承認済みの JavaScript オリジン セクションに追加してください。そうしないと、Google One Tap を表示できません。

注記:

ウェブサイトで Google One Tap を有効にするには(Logto サインイン体験を超えて)、この機能は開発中です。更新情報をお待ちください。

設定を保存する

Logto コネクター設定エリアで必要な値をすべて記入したことを確認してください。「保存して完了」または「変更を保存」をクリックすると、Google コネクターが利用可能になります。

サインイン体験で Google コネクターを有効にする

ソーシャルコネクターを正常に作成したら、サインイン体験で「Google で続行」ボタンとして有効にすることができます。

  1. Console > サインイン体験 > サインアップとサインイン に移動します。
  2. (オプション)ソーシャルログインのみが必要な場合は、サインアップ識別子に「該当なし」を選択します。
  3. 設定済みの Google コネクターを「ソーシャルサインイン」セクションに追加します。
サインイン体験タブ

テストと検証

Capacitor JS アプリに戻ります。これで Google を使用してサインインできるはずです。お楽しみください!

さらなる読み物

エンドユーザーフロー:Logto は、MFA やエンタープライズシングルサインオン (SSO) を含む即時使用可能な認証 (Authentication) フローを提供し、アカウント設定、セキュリティ検証、マルチテナント体験の柔軟な実装のための強力な API を備えています。

認可 (Authorization):認可 (Authorization) は、ユーザーが認証 (Authentication) された後に行えるアクションやアクセスできるリソースを定義します。ネイティブおよびシングルページアプリケーションの API を保護し、ロールベースのアクセス制御 (RBAC) を実装する方法を探ります。

組織 (Organizations):特にマルチテナント SaaS や B2B アプリで効果的な組織機能は、テナントの作成、メンバー管理、組織レベルの RBAC、およびジャストインタイムプロビジョニングを可能にします。

顧客 IAM シリーズ:顧客(または消費者)アイデンティティとアクセス管理に関する連続ブログ投稿で、101 から高度なトピックまでを網羅しています。