Logto は、モダンなアプリや SaaS 製品向けに設計された Auth0 の代替です。 Cloud と オープンソース の両方のサービスを提供し、アイデンティティと管理 (IAM) システムを迅速に立ち上げるのに役立ちます。認証 (Authentication)、認可 (Authorization)、マルチテナント管理を すべて一つに まとめて楽しんでください。
Logto Cloud で無料の開発テナントから始めることをお勧めします。これにより、すべての機能を簡単に探索できます。
この記事では、Expo (React Native) と Logto を使用して、Mailgun サインイン体験(ユーザー認証 (Authentication))を迅速に構築する手順を説明します。
前提条件
- 稼働中の Logto インスタンス。紹介ページ をチェックして始めてください。
- Expo (React Native) の基本的な知識。
- 使用可能な Mailgun アカウント。
Logto にアプリケーションを作成する
Logto は OpenID Connect (OIDC) 認証 (Authentication) と OAuth 2.0 認可 (Authorization) に基づいています。これは、複数のアプリケーション間でのフェデレーテッドアイデンティティ管理をサポートし、一般的にシングルサインオン (SSO) と呼ばれます。
あなたの ネイティブアプリ アプリケーションを作成するには、次の手順に従ってください:
- Logto コンソール を開きます。「Get started」セクションで、「View all」リンクをクリックしてアプリケーションフレームワークのリストを開きます。あるいは、Logto Console > Applications に移動し、「Create application」ボタンをクリックします。
- 開いたモーダルで、左側のクイックフィルターチェックボックスを使用して、利用可能なすべての "ネイティブアプリ" フレームワークをフィルタリングするか、"ネイティブアプリ" セクションをクリックします。"Expo" フレームワークカードをクリックして、アプリケーションの作成を開始します。
- アプリケーション名を入力します。例:「Bookstore」と入力し、「Create application」をクリックします。
🎉 タダーン!Logto で最初のアプリケーションを作成しました。詳細な統合ガイドを含むお祝いページが表示されます。ガイドに従って、アプリケーションでの体験を確認してください。
Logto SDK を統合する
- 次のデモンストレーションは Expo ~50.0.6 上で構築されています。
- サンプルプロジェクトは、私たちの SDK リポジトリ で利用可能です。
インストール
お気に入りのパッケージマネージャーを使用して Logto SDK とピア依存関係をインストールします:
- npm
- Yarn
- pnpm
npm i @logto/rn
npm i expo-crypto expo-secure-store expo-web-browser @react-native-async-storage/async-storage
yarn add @logto/rn
yarn add expo-crypto expo-secure-store expo-web-browser @react-native-async-storage/async-storage
pnpm add @logto/rn
pnpm add expo-crypto expo-secure-store expo-web-browser @react-native-async-storage/async-storage
@logto/rn
パッケージは Logto の SDK です。残りのパッケージはそのピア依存関係です。これらは直接の依存関係としてリストされることができませんでした。なぜなら、Expo CLI はネイティブモジュールのすべての依存関係がルートプロジェクトの package.json
に直接インストールされることを要求するからです。
ベア React Native アプリ にこれをインストールする場合は、これらの 追加のインストール手順 に従う必要があります。
Logto プロバイダーを初期化する
LogtoProvider
をインポートして使用し、Logto コンテキストを提供します:
import { LogtoProvider, LogtoConfig } from '@logto/rn';
const config: LogtoConfig = {
endpoint: '<your-logto-endpoint>',
appId: '<your-application-id>',
};
const App = () => (
<LogtoProvider config={config}>
<YourAppContent />
</LogtoProvider>
);
サインインとサインアウトを実装する
詳細に入る前に、エンドユーザーの体験について簡単に説明します。サインインプロセスは次のように簡略化できます:
- あなたのアプリがサインインメソッドを呼び出します。
- ユーザーは Logto のサインインページにリダイレクトされます。ネイティブアプリの場合、システムブラウザが開かれます。
- ユーザーがサインインし、あなたのアプリにリダイレクトされます(リダイレクト URI として設定されています)。
リダイレクトベースのサインインについて
- この認証 (Authentication) プロセスは OpenID Connect (OIDC) プロトコルに従い、Logto はユーザーのサインインを保護するために厳格なセキュリティ対策を講じています。
- 複数のアプリがある場合、同じアイデンティティプロバイダー (Logto) を使用できます。ユーザーがあるアプリにサインインすると、Logto は別のアプリにアクセスした際に自動的にサインインプロセスを完了します。
リダイレクトベースのサインインの理論と利点について詳しく知るには、Logto サインイン体験の説明を参照してください。
Logto Console のアプリケーション詳細ページに移動します。ネイティブリダイレクト URI(例:io.logto://callback
)を追加し、「保存」をクリックします。
-
iOS の場合、
ASWebAuthenticationSession
クラスがリダイレクト URI を登録されているかどうかに関係なくリッスンするため、リダイレクト URI スキームは実際には重要ではありません。 -
Android の場合、リダイレクト URI スキームは Expo の
app.json
ファイルに記入する必要があります。例えば:app.json{
"expo": {
"scheme": "io.logto"
}
}
さて、アプリに戻って、useLogto
フックを使用してサインインとサインアウトを行うことができます:
import { useLogto } from '@logto/rn';
import { Button } from 'react-native';
const Content = () => {
const { signIn, signOut, isAuthenticated } = useLogto();
return (
<div>
{isAuthenticated ? (
<Button title="Sign out" onPress={async () => signOut()} />
) : (
// リダイレクト URI を自分のものに置き換えてください
<Button title="Sign in" onPress={async () => signIn('io.logto://callback')} />
)}
</div>
);
};
チェックポイント: アプリケーションをテストする
これで、アプリケーションをテストできます:
- アプリケーションを実行すると、サインインボタンが表示されます。
- サインインボタンをクリックすると、SDK がサインインプロセスを初期化し、Logto のサインインページにリダイレクトされます。
- サインインすると、アプリケーションに戻り、サインアウトボタンが表示されます。
- サインアウトボタンをクリックして、トークンストレージをクリアし、サインアウトします。
Mailgun コネクターを追加する
Email コネクターは、認証 (Authentication) のためにワンタイムパスワード (OTP) を送信するための方法です。これは、Email ベースの登録、サインイン、二要素認証 (2FA)、アカウント回復を含むパスワードレス認証 (Authentication) をサポートするために メールアドレス の確認を可能にします。 Logto の Email コネクターを使用すると、数分でこれを設定できます。
Email コネクターを追加するには、次の手順に従ってください:
- Console > Connector > Email and SMS connectors に移動します。
- 新しい Email コネクターを追加するには、「Set up」ボタンをクリックし、「Mailgun」を選択します。
- 選択したプロバイダーの README ドキュメントを確認します。
- 「Parameter Configuration」セクションで設定フィールドを完了します。
- JSON エディターを使用して Email テンプレートをカスタマイズします。
- メールアドレス に確認コードを送信して設定をテストします。

インプレースコネクターガイドに従っている場合は、次のセクションをスキップできます。
Mailgun メールコネクター を設定する
前提条件
- Mailgun アカウント
- Mailgun アカウントから取得した API キー(メッセージ(メール)送信の権限が必要です)。詳細は Where Can I Find My API Key and SMTP Credentials? を参照してください。
基本設定
- 異なる Mailgun API エンドポイントを使用する場合は、
endpoint
フィールドに入力してください。たとえば、EU リージョンの場合はhttps://api.eu.mailgun.net
となります。デフォルト値はhttps://api.mailgun.net
です。 domain
フィールドには、Mailgun アカウントで登録したドメインを入力してください。この値は Mailgun ダッシュボードの Domains セクションで確認できます。ドメインはexample.com
の形式で、https://
やhttp://
のプレフィックスは不要です。apiKey
フィールドには、Mailgun アカウントで生成した API キーを入力してください。from
フィールドには、メール送信元として使用するメールアドレスを入力してください。このメールアドレスは Mailgun アカウントに登録されている必要があります。メールアドレスはSender Name <[email protected]>
の形式で入力してください。
Deliveries
Config オブジェクト
「Deliveries」セクションでは、さまざまなシナリオで送信されるメールの内容を設定できます。これは JSON のキーと値のマップであり、キーは使用タイプ、値は送信するメールの内容設定を含むオブジェクトです。
{
"<usage-type>": {
// ...
}
}
使用タイプ
サポートされている使用タイプは次のとおりです:
Register
: ユーザーが登録する際に送信されるメール。SignIn
: ユーザーがサインインする際に送信されるメール。ForgotPassword
: ユーザーがパスワードをリセットする際に送信されるメール。Generic
: ユーザーが汎用的なアクション(例:メールコネクターのテスト)を行う際に送信されるメール。
deliveries 設定で使用タイプが指定されていない場合、汎用メールが送信されます。汎用メールも指定されていない場合、コネクターはエラーを返します。
内容設定
コネクターは、直接 HTML コンテンツまたは Mailgun テンプレートの両方をサポートしています。各使用タイプごとにいずれかを利用できます。
件名や内容には {{code}}
プレースホルダーを使用して認証コードを挿入できます。
直接 HTML コンテンツを使用する場合は、次のフィールドを入力してください:
subject
: 送信するメールの件名。replyTo
: 返信先として使用するメールアドレス。html
: (必須)送信するメールの HTML コンテンツ。text
: 送信するメールのプレーンテキスト版。
Mailgun テンプレートを使用する場合は、次のフィールドを入力してください:
subject
: 送信するメールの件名。replyTo
: 返信先として使用するメールアドレス。template
: (必須)使用する Mailgun テンプレート名。variables
: Mailgun テンプレートに渡す変数。Mailgun へ送信する前に文字列化されるため、JSON のキーと値のマップで指定してください。code
変数はコネクターによって自動的に追加されるため、含める必要はありません。
例
以下は deliveries 設定の例です:
{
"Register": {
"subject": "{{code}} is your verification code",
"replyTo": "Foo <[email protected]>",
"html": "<h1>Welcome to Logto</h1><p>Your verification code is {{code}}.</p>",
"text": "Welcome to Logto. Your verification code is {{code}}."
},
"SignIn": {
"subject": "Welcome back to Logto",
"replyTo": "Foo <[email protected]>",
"template": "logto-sign-in",
"variables": {
"bar": "baz"
}
}
}
設定を保存する
Logto コネクター設定エリアで必要な値をすべて記入したことを確認してください。「保存して完了」または「変更を保存」をクリックすると、Mailgun コネクターが利用可能になります。
サインイン体験で Mailgun コネクターを有効にする
コネクターを正常に作成したら、電話番号ベースのパスワードレスログインと登録を有効にできます。
- コンソール > サインイン体験 > サインアップとサインイン に移動します。
- サインアップ方法を設定します(オプション):
- サインアップ識別子として "メールアドレス" または "Email or phone number" を選択します。
- "Verify at sign-up" は強制的に有効化されます。登録時に "Create a password" を有効にすることもできます。
- サインイン方法を設定します:
- サインイン識別子の一つとして メールアドレス を選択します。複数の利用可能な識別子(メール、電話番号、ユーザー名)を提供できます。
- 認証 (Authentication) 要素として "Verification code" および / または "Password" を選択します。
- "Save changes" をクリックし、"Live preview" でテストします。

OTP を使用した登録とログインに加えて、パスワードの回復や ベースのセキュリティ検証を有効にし、メールアドレス をプロファイルにリンクすることもできます。詳細については、エンドユーザーフロー を参照してください。
テストと検証
Expo (React Native) アプリに戻ります。これで Mailgun を使用してサインインできるはずです。お楽しみください!
さらなる読み物
エンドユーザーフロー:Logto は、MFA やエンタープライズシングルサインオン (SSO) を含む即時使用可能な認証 (Authentication) フローを提供し、アカウント設定、セキュリティ検証、マルチテナント体験の柔軟な実装のための強力な API を備えています。
認可 (Authorization):認可 (Authorization) は、ユーザーが認証 (Authentication) された後に行えるアクションやアクセスできるリソースを定義します。ネイティブおよびシングルページアプリケーションの API を保護し、ロールベースのアクセス制御 (RBAC) を実装する方法を探ります。
組織 (Organizations):特にマルチテナント SaaS や B2B アプリで効果的な組織機能は、テナントの作成、メンバー管理、組織レベルの RBAC、およびジャストインタイムプロビジョニングを可能にします。
顧客 IAM シリーズ:顧客(または消費者)アイデンティティとアクセス管理に関する連続ブログ投稿で、101 から高度なトピックまでを網羅しています。