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

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

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

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

前提条件

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

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

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

あなたの 従来型 Web アプリケーションを作成するには、次の手順に従ってください:

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

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

SvelteKit SDK を統合する

ヒント:
  • 以下のデモンストレーションは SvelteKit 2.0.0 に基づいています。
  • サンプルプロジェクトは GitHub リポジトリ で利用可能です。

インストール

お好みのパッケージマネージャーを使用して Logto SDK をインストールします:

npm i @logto/sveltekit

Logto フックを追加する

hooks.server.ts ファイルに、次のコードを追加して Logto フックをサーバーに注入します:

hooks.server.ts
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>',
}
);

これらの情報は機密性が高いため、環境変数を使用することをお勧めします:

hooks.server.ts
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() ヘルパー関数 を使用してそれらを連鎖させることができます:

hooks.server.ts
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/ で実行されていると仮定しています。

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

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

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

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

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


リダイレクト URI を設定する

Logto Console のアプリケーション詳細ページに移動します。リダイレクト URI http://localhost:3000/callback を追加します。

Logto Console のリダイレクト URI

サインインと同様に、ユーザーは共有セッションからサインアウトするために Logto にリダイレクトされるべきです。完了したら、ユーザーをあなたのウェブサイトに戻すと良いでしょう。例えば、http://localhost:3000/ をサインアウト後のリダイレクト URI セクションとして追加します。

その後、「保存」をクリックして変更を保存します。

サインインとサインアウトを実装したいページで、次のアクションを定義します:

+page.server.ts
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 コンポーネントで使用します:

+page.svelte
<form method="POST" action="?/{data.user ? 'signOut' : 'signIn'}">
<button type="submit">Sign {data.user ? 'out' : 'in'}</button>
</form>

チェックポイント: アプリケーションをテストする

これで、アプリケーションをテストできます:

  1. アプリケーションを実行すると、サインインボタンが表示されます。
  2. サインインボタンをクリックすると、SDK がサインインプロセスを初期化し、Logto のサインインページにリダイレクトされます。
  3. サインインすると、アプリケーションに戻り、サインアウトボタンが表示されます。
  4. サインアウトボタンをクリックして、トークンストレージをクリアし、サインアウトします。

Microsoft コネクターを追加する

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

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

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

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

Microsoft を設定する

Azure Portal で Microsoft Azure AD を設定する

  • Azure Portal にアクセスし、Azure アカウントでサインインします。Microsoft Azure AD にアクセスするには、アクティブなサブスクリプションが必要です。
  • 提供されているサービスから Azure Active Directory をクリックし、左側のメニューから App Registrations をクリックします。
  • 上部の New Registration をクリックし、説明を入力し、アクセス タイプ を選択して、リダイレクト URI を追加します。これは、ログイン後にユーザーをアプリケーションにリダイレクトするためのものです。この場合、${your_logto_endpoint}/callback/${connector_id} になります。例:https://foo.logto.app/callback/${connector_id}connector_id は Logto 管理コンソールのコネクター詳細ページの上部バーにも表示されます。設定セクションで Callback URI をコピーできます。
  • プラットフォームとして Web を選択します。

Logto に設定を入力する

NameType
clientIdstring
clientSecretstring
tenantIdstring
cloudInstancestring

クライアント ID

Azure Portal の新しく作成したアプリケーションの 概要 セクションで Application (client) ID を見つけることができます。

クライアント シークレット

  • 新しく作成したアプリケーションで、Certificates & Secrets をクリックしてクライアント シークレットを取得し、上部の New client secret をクリックします。
  • 説明と有効期限を入力します。
  • クライアント シークレットは一度だけ表示されます。Logto コネクター設定に value を入力し、安全な場所に保存してください。

クラウド インスタンス

通常、https://login.microsoftonline.com/ です。詳細については、Azure AD 認証エンドポイント を参照してください。

テナント ID

Logto はこのフィールドを使用して認可 (Authorization) エンドポイントを構築します。この値は、Azure Portal でアプリケーションを作成する際に選択した アクセス タイプ に依存します。

  • アクセス タイプとして この組織ディレクトリ内のアカウントのみ を選択した場合、{TenantID} を入力する必要があります。テナント ID は Azure Active Directory の 概要 セクションで見つけることができます。
  • アクセス タイプとして 任意の組織ディレクトリ内のアカウント を選択した場合、organizations を入力する必要があります。
  • アクセス タイプとして 任意の組織ディレクトリまたは個人の Microsoft アカウント内のアカウント を選択した場合、common を入力する必要があります。
  • アクセス タイプとして 個人の Microsoft アカウントのみ を選択した場合、consumers を入力する必要があります。

設定を保存する

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

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

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

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

テストと検証

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

さらなる読み物

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

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

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

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