Logto は、モダンなアプリや SaaS 製品向けに設計された Auth0 の代替です。 Cloud と オープンソース の両方のサービスを提供し、アイデンティティと管理 (IAM) システムを迅速に立ち上げるのに役立ちます。認証 (Authentication)、認可 (Authorization)、マルチテナント管理を すべて一つに まとめて楽しんでください。
Logto Cloud で無料の開発テナントから始めることをお勧めします。これにより、すべての機能を簡単に探索できます。
この記事では、SvelteKit と Logto を使用して、Aliyun サインイン体験(ユーザー認証 (Authentication))を迅速に構築する手順を説明します。
前提条件
Logto にアプリケーションを作成する
Logto は OpenID Connect (OIDC) 認証 (Authentication) と OAuth 2.0 認可 (Authorization) に基づいています。これは、複数のアプリケーション間でのフェデレーテッドアイデンティティ管理をサポートし、一般的にシングルサインオン (SSO) と呼ばれます。
あなたの 従来型 Web アプリケーションを作成するには、次の手順に従ってください:
- Logto コンソール を開きます。「Get started」セクションで、「View all」リンクをクリックしてアプリケーションフレームワークのリストを開きます。あるいは、Logto Console > Applications に移動し、「Create application」ボタンをクリックします。
- 開いたモーダルで、左側のクイックフィルターチェックボックスを使用して、利用可能なすべての "従来型 Web" フレームワークをフィルタリングするか、"従来型 Web" セクションをクリックします。"SvelteKit" フレームワークカードをクリックして、アプリケーションの作成を開始します。
- アプリケーション名を入力します。例:「Bookstore」と入力し、「Create application」をクリックします。
🎉 タダーン!Logto で最初のアプリケーションを作成しました。詳細な統合ガイドを含むお祝いページが表示されます。ガイドに従って、アプリケーションでの体験を確認してください。
Logto SDK を統合する
- 以下のデモンストレーションは SvelteKit 2.0.0 に基づいています。
- サンプルプロジェクトは GitHub リポジトリ で利用可能です。
インストール
お好みのパッケージマネージャーを使用して Logto SDK をインストールします:
- npm
- pnpm
- yarn
npm i @logto/sveltekit
pnpm add @logto/sveltekit
yarn add @logto/sveltekit
Logto フックを追加する
hooks.server.ts
ファイルに、次のコードを追加して Logto フックをサーバーに注入します:
import { handleLogto } from '@logto/sveltekit';
export const handle = handleLogto(
{
endpoint: '<your-logto-endpoint>',
appId: '<your-logto-app-id>',
appSecret: '<your-logto-app-secret>',
},
{
encryptionKey: '<a-random-string>',
}
);
これらの情報は機密性が高いため、環境変数を使用することをお勧めします:
import { handleLogto } from '@logto/sveltekit';
import { env } from '$env/dynamic/private';
export const handle = handleLogto(
{
endpoint: env.LOGTO_ENDPOINT,
appId: env.LOGTO_APP_ID,
appSecret: env.LOGTO_APP_SECRET,
},
{
encryptionKey: env.LOGTO_COOKIE_ENCRYPTION_KEY,
}
);
複数のフックがある場合は、sequence() ヘルパー関数 を使用してそれらを連鎖させることができます:
import { sequence } from '@sveltejs/kit/hooks';
export const handle = sequence(handleLogto, handleOtherHook);
これで locals
オブジェクトで Logto クライアントにアクセスできます。TypeScript の場合、app.d.ts
に型を追加できます:
import type { LogtoClient, UserInfoResponse } from '@logto/sveltekit';
declare global {
namespace App {
interface Locals {
logtoClient: LogtoClient;
user?: UserInfoResponse;
}
}
}
user
オブジェクトについては後で説明します。
サインインとサインアウトを実装する
以下のコードスニペットでは、あなたのアプリが http://localhost:3000/
で実行されていると仮定しています。
詳細に入る前に、エンドユーザーの体験について簡単に説明します。サインインプロセスは次のように簡略化できます:
- あなたのアプリがサインインメソッドを呼び出します。
- ユーザーは Logto のサインインページにリダイレクトされます。ネイティブアプリの場合、システムブラウザが開かれます。
- ユーザーがサインインし、あなたのアプリにリダイレクトされます(リダイレクト URI として設定されています)。
リダイレクトベースのサインインについて
- この認証 (Authentication) プロセスは OpenID Connect (OIDC) プロトコルに従い、Logto はユーザーのサインインを保護するために厳格なセキュリティ対策を講じています。
- 複数のアプリがある場合、同じアイデンティティプロバイダー (Logto) を使用できます。ユーザーがあるアプリにサインインすると、Logto は別のアプリにアクセスした際に自動的にサインインプロセスを完了します。
リダイレクトベースのサインインの理論と利点について詳しく知るには、Logto サインイン体験の説明を参照してください。
リダイレクト URI を設定する
Logto Console のアプリケーション詳細ページに移動します。リダイレクト URI http://localhost:3000/callback
を追加します。

サインインと同様に、ユーザーは共有セッションからサインアウトするために Logto にリダイレクトされるべきです。完了したら、ユーザーをあなたのウェブサイトに戻すと良いでしょう。例えば、http://localhost:3000/
をサインアウト後のリダイレクト URI セクションとして追加します。
その後、「保存」をクリックして変更を保存します。
サインインとサインアウトを実装したいページで、次のアクションを定義します:
import type { Actions } from './$types';
export const actions: Actions = {
signIn: async ({ locals }) => {
await locals.logtoClient.signIn('http://localhost:3000/callback');
},
signOut: async ({ locals }) => {
await locals.logtoClient.signOut('http://localhost:3000/');
},
};
次に、これらのアクションを Svelte コンポーネントで使用します:
<form method="POST" action="?/{data.user ? 'signOut' : 'signIn'}">
<button type="submit">Sign {data.user ? 'out' : 'in'}</button>
</form>
チェックポイント: アプリケーションをテストする
これで、アプリケーションをテストできます:
- アプリケーションを実行すると、サインインボタンが表示されます。
- サインインボタンをクリックすると、SDK がサインインプロセスを初期化し、Logto のサインインページにリダイレクトされます。
- サインインすると、アプリケーションに戻り、サインアウトボタンが表示されます。
- サインアウトボタンをクリックして、トークンストレージをクリアし、サインアウトします。
Aliyun コネクターを追加する
SMS コネクターは、認証 (Authentication) のためにワンタイムパスワード (OTP) を送信するための方法です。これは、SMS ベースの登録、サインイン、二要素認証 (2FA)、アカウント回復を含むパスワードレス認証 (Authentication) をサポートするために 電話番号 の確認を可能にします。 Logto の SMS コネクターを使用すると、数分でこれを設定できます。
SMS コネクターを追加するには、次の手順に従ってください:
- Console > Connector > Email and SMS connectors に移動します。
- 新しい SMS コネクターを追加するには、「Set up」ボタンをクリックし、「Aliyun」を選択します。
- 選択したプロバイダーの README ドキュメントを確認します。
- 「Parameter Configuration」セクションで設定フィールドを完了します。
- JSON エディターを使用して SMS テンプレートをカスタマイズします。
- 電話番号 に確認コードを送信して設定をテストします。

インプレースコネクターガイドに従っている場合は、次のセクションをスキップできます。
Aliyun SMS コネクター を設定する
Aliyun SMS コンソールでショートメッセージサービスを設定する
Aliyun アカウントを作成する
Aliyun のウェブサイト にアクセスし、まだアカウントをお持ちでない場合は登録してください。
Aliyun ショートメッセージサービスを有効化・設定する
- Aliyun のウェブサイト で Aliyun アカウントにサインインし、SMS サービスコンソールページ にアクセスします。
- SMS サービスページ左上の「無料開通 (Open for free)」ボタンをクリックし、設定プロセスを開始します。
- 「短信サービス開通条款 (SMS service activation Agreement)」を読み、同意した上で「开通服务 (Subscribe to a service)」をクリックして次へ進みます。
- SMS サービスコンソールページ に移動したら、用途に応じてサイドバーの「国内消息 (Mainland China)」または「国际/港澳台消息 (Outside Mainland China)」ボタンを選択します。
- ガイドラインに従ってシグネチャとテンプレートを追加し、審査に必要な資料や情報を提出します。
- シグネチャ申請時の「适用场景 (Scenario)」には「验证码 (Verification Code Message)」を、テンプレート申請時の「模板类型 (Type)」にも「验证码 (Verification Code Message)」を選択してください。これは認証コード送信用のシグネチャとテンプレートを利用するためです。現時点では認証コード関連以外の SMS メッセージ送信はサポートしていません。
- テンプレート本文で認証コードを挿入したい箇所には
{{code}}
をプレースホルダーとして使用してください。
- SMS シグネチャとテンプレートの申請を提出したら、反映されるまでしばらく待つ必要があります。この時点で SMS サービスコンソールページ に戻り、テスト SMS を送信できます。シグネチャとテンプレートが利用可能であれば直接試せますし、まだ反映されていない場合は Aliyun のテスト用テンプレートも利用できます。
- テストメッセージ送信前に少額のチャージが必要な場合があります。
- テストメッセージ送信前にテスト用電話番号の登録を求められる場合もあります。詳細は SMS サービスコンソールページ サイドバーの「快速学习 (Quick Start)」タブをご覧ください。
コネクター JSON を作成する
- SMS サービスコンソールページ で右上のアバターにカーソルを合わせ、「AccessKey 管理 (AccessKey Management)」に進み、「创建 AccessKey (Create AccessKey)」をクリックします。セキュリティ認証後、「AccessKey ID」と「AccessKey Secret」のペアが発行されますので、大切に保管してください。
- 先ほどアクセスした「国内消息 (Mainland China)」または「国际/港澳台消息 (Outside Mainland China)」タブで、「签名名称 (Signature)」と「模板 CODE (Template Code)」を確認できます。
- テスト専用のシグネチャとテンプレートを利用したい場合は、「快速学习 (Quick Start)」タブに進み、「Signature & Templates (For Test Only)」の下に表示されます。
- Aliyun SMS コネクターの設定を入力します:
accessKeyId
とaccessKeySecret
フィールドには、手順 1 で取得したアクセスキーのペアを入力します。signName
フィールドには、手順 2 で確認した「签名名称 (Signature)」を入力します。すべてのテンプレートでこのシグネチャ名を共有します。- 用途ごとに複数の SMS コネクターテンプレートを追加できます。単一テンプレートを追加する例は以下の通りです:
templateCode
フィールドには、手順 2 で取得した「模板 CODE (Template Code)」を入力します。これが SMS の内容を制御します。usageType
フィールドには、用途に応じてRegister
、SignIn
、ForgotPassword
、Generic
のいずれかを入力します。(usageType
は Logto 独自のプロパティで、用途を識別します。)すべてのユーザーフローを有効にするには、Register
、SignIn
、ForgotPassword
、Generic
の usageType を持つテンプレートが必要です。
Aliyun SMS コネクターのテスト
電話番号を入力し「送信 (Send)」をクリックすることで、「保存して完了 (Save and Done)」前に設定が機能するか確認できます。
以上です。サインイン体験でコネクターを有効化 するのをお忘れなく。
設定タイプ
名前 | 型 |
---|---|
accessKeyId | string |
accessKeySecret | string |
signName | string |
templates | Template[] |
テンプレートプロパティ | 型 | 列挙値 |
---|---|---|
templateCode | string | N/A |
usageType | enum string | 'Register' / 'SignIn' / 'ForgotPassword' / 'Generic' |
設定を保存する
Logto コネクター設定エリアで必要な値をすべて記入したことを確認してください。「保存して完了」または「変更を保存」をクリックすると、Aliyun コネクターが利用可能になります。
サインイン体験で Aliyun コネクターを有効にする
コネクターを正常に作成したら、電話番号ベースのパスワードレスログインと登録を有効にできます。
- コンソール > サインイン体験 > サインアップとサインイン に移動します。
- サインアップ方法を設定します(オプション):
- サインアップ識別子として "電話番号" または "Email or phone number" を選択します。
- "Verify at sign-up" は強制的に有効化されます。登録時に "Create a password" を有効にすることもできます。
- サインイン方法を設定します:
- サインイン識別子の一つとして 電話番号 を選択します。複数の利用可能な識別子(メール、電話番号、ユーザー名)を提供できます。
- 認証 (Authentication) 要素として "Verification code" および / または "Password" を選択します。
- "Save changes" をクリックし、"Live preview" でテストします。

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