Logto は、モダンなアプリや SaaS 製品向けに設計された Auth0 の代替です。 Cloud と オープンソース の両方のサービスを提供し、アイデンティティと管理 (IAM) システムを迅速に立ち上げるのに役立ちます。認証 (Authentication)、認可 (Authorization)、マルチテナント管理を すべて一つに まとめて楽しんでください。
Logto Cloud で無料の開発テナントから始めることをお勧めします。これにより、すべての機能を簡単に探索できます。
この記事では、Next.js (App Router) と Logto を使用して、Alipay (Native) サインイン体験(ユーザー認証 (Authentication))を迅速に構築する手順を説明します。
前提条件
- 稼働中の Logto インスタンス。紹介ページ をチェックして始めてください。
- Next.js (App Router) の基本的な知識。
- 使用可能な Alipay (Native) アカウント。
Logto でアプリケーションを作成する
Logto は OpenID Connect (OIDC) 認証 (Authentication) と OAuth 2.0 認可 (Authorization) に基づいています。これは、複数のアプリケーション間でのフェデレーテッドアイデンティティ管理をサポートし、一般的にシングルサインオン (SSO) と呼ばれます。
あなたの 従来型 Web アプリケーションを作成するには、次の手順に従ってください:
- Logto コンソール を開きます。「Get started」セクションで、「View all」リンクをクリックしてアプリケーションフレームワークのリストを開きます。あるいは、Logto Console > Applications に移動し、「Create application」ボタンをクリックします。
- 開いたモーダルで、左側のクイックフィルターチェックボックスを使用して、利用可能なすべての "従来型 Web" フレームワークをフィルタリングするか、"従来型 Web" セクションをクリックします。"Next.js (App Router)" フレームワークカードをクリックして、アプリケーションの作成を開始します。
- アプリケーション名を入力します。例:「Bookstore」と入力し、「Create application」をクリックします。
🎉 タダーン!Logto で最初のアプリケーションを作成しました。詳細な統合ガイドを含むお祝いページが表示されます。ガイドに従って、アプリケーションでの体験を確認してください。
Next.js (App Router) SDK を統合する
- サンプルプロジェクトは、私たちの SDK リポジトリ で利用可能です。
- この例は、Next.js の App Router に基づいています。
- チュートリアルビデオは、私たちの YouTube チャンネル で視聴できます。
インストール
お好みのパッケージマネージャーを使用して Logto SDK をインストールします:
- npm
- pnpm
- yarn
npm i @logto/next
pnpm add @logto/next
yarn add @logto/next
設定の準備
Logto クライアントの設定を準備します:
import { LogtoNextConfig } from '@logto/next';
export const logtoConfig: LogtoNextConfig = {
appId: '<your-application-id>',
appSecret: '<your-app-secret-copied-from-console>',
endpoint: '<your-logto-endpoint>', // 例: http://localhost:3001
baseUrl: '<your-nextjs-app-base-url>', // 例: http://localhost:3000
cookieSecret: 'complex_password_at_least_32_characters_long',
cookieSecure: process.env.NODE_ENV === 'production',
};
リダイレクト URI の設定
詳細に入る前に、エンドユーザーの体験について簡単に説明します。サインインプロセスは次のように簡略化できます:
- あなたのアプリがサインインメソッドを呼び出します。
- ユーザーは Logto のサインインページにリダイレクトされます。ネイティブアプリの場合、システムブラウザが開かれます。
- ユーザーがサインインし、あなたのアプリにリダイレクトされます(リダイレクト URI として設定されています)。
リダイレクトベースのサインインについて
- この認証 (Authentication) プロセスは OpenID Connect (OIDC) プロトコルに従い、Logto はユーザーのサインインを保護するために厳格なセキュリティ対策を講じています。
- 複数のアプリがある場合、同じアイデンティティプロバイダー (Logto) を使用できます。ユーザーがあるアプリにサインインすると、Logto は別のアプリにアクセスした際に自動的にサインインプロセスを完了します。
リダイレクトベースのサインインの理論と利点について詳しく知るには、Logto サインイン体験の説明を参照してください。
以下のコードスニペットでは、あなたのアプリが http://localhost:3000/
で実行されていると仮定しています。
リダイレクト URI を設定する
Logto Console のアプリケーション詳細ページに移動します。リダイレクト URI http://localhost:3000/callback
を追加します。

サインインと同様に、ユーザーは共有セッションからサインアウトするために Logto にリダイレクトされるべきです。完了したら、ユーザーをあなたのウェブサイトに戻すと良いでしょう。例えば、http://localhost:3000/
をサインアウト後のリダイレクト URI セクションとして追加します。
その後、「保存」をクリックして変更を保存します。
コールバックの処理
ユーザーがサインインした後、Logto はユーザーを上記で設定したリダイレクト URI に戻します。しかし、アプリケーションが正しく動作するためには、まだ行うべきことがあります。
サインインコールバックを処理するために、handleSignIn
というヘルパー関数を提供しています:
import { handleSignIn } from '@logto/next/server-actions';
import { redirect } from 'next/navigation';
import { NextRequest } from 'next/server';
import { logtoConfig } from '../logto';
export async function GET(request: NextRequest) {
const searchParams = request.nextUrl.searchParams;
await handleSignIn(logtoConfig, searchParams);
redirect('/');
}
サインインとサインアウトの実装
サインインとサインアウトボタンの実装
Next.js App Router では、イベントはクライアントコンポーネントで処理されるため、まず SignIn
と SignOut
の 2 つのコンポーネントを作成する必要があります。
'use client';
type Props = {
onSignIn: () => Promise<void>;
};
const SignIn = ({ onSignIn }: Props) => {
return (
<button
onClick={() => {
onSignIn();
}}
>
Sign In
</button>
);
};
export default SignIn;
'use client';
type Props = {
onSignOut: () => Promise<void>;
};
const SignOut = ({ onSignOut }: Props) => {
return (
<button
onClick={() => {
onSignOut();
}}
>
Sign Out
</button>
);
};
export default SignOut;
これらのコンポーネントがクライアントコンポーネントであることを示すために、ファイルの先頭に 'use client'
を追加することを忘れないでください。
ホームページにボタンを追加
クライアントコンポーネント内でインラインの "use server" 注釈付きサーバーアクションを定義することはできません。サーバーコンポーネントから props を通じて渡す必要があります。
次に、ホームページにサインインとサインアウトのボタンを追加します。必要に応じて SDK のサーバーアクションを呼び出す必要があります。これを支援するために、getLogtoContext
を使用して認証 (Authentication) ステータスを取得します。
import { getLogtoContext, signIn, signOut } from '@logto/next/server-actions';
import SignIn from './sign-in';
import SignOut from './sign-out';
import { logtoConfig } from './logto';
const Home = () => {
const { isAuthenticated, claims } = await getLogtoContext(logtoConfig);
return (
<nav>
{isAuthenticated ? (
<p>
こんにちは, {claims?.sub},
<SignOut
onSignOut={async () => {
'use server';
await signOut(logtoConfig);
}}
/>
</p>
) : (
<p>
<SignIn
onSignIn={async () => {
'use server';
await signIn(logtoConfig);
}}
/>
</p>
)}
</nav>
);
};
export default Home;
チェックポイント: アプリケーションをテストする
これで、アプリケーションをテストできます:
- アプリケーションを実行すると、サインインボタンが表示されます。
- サインインボタンをクリックすると、SDK がサインインプロセスを初期化し、Logto のサインインページにリダイレクトされます。
- サインインすると、アプリケーションに戻り、サインアウトボタンが表示されます。
- サインアウトボタンをクリックして、トークンストレージをクリアし、サインアウトします。
Alipay (Native) コネクターを追加する
迅速なサインインを有効にし、ユーザーコンバージョンを向上させるために、アイデンティティプロバイダー (IdP) として Next.js (App Router) を接続します。Logto ソーシャルコネクターは、いくつかのパラメーター入力を許可することで、この接続を数分で確立するのに役立ちます。
ソーシャルコネクターを追加するには、次の手順に従ってください:
- Console > Connectors > Social Connectors に移動します。
- 「Add social connector」をクリックし、「Alipay (Native)」を選択します。
- README ガイドに従い、必要なフィールドを完了し、設定をカスタマイズします。

インプレースコネクターガイドに従っている場合は、次のセクションをスキップできます。
Alipay モバイルアプリ を設定する
Alipay 開発者アカウントの登録
Alipay 開発者アカウントを登録 してください。まだアカウントをお持ちでない場合は、こちらから登録できます。
Alipay アプリの作成と設定
- Alipay コンソール に、先ほど登録したアカウントでサインインします。
- 「マイアプリケーション」(我的应用) パネルの「Web & モバイルアプリ」(网页&移动应用) タブに移動します。
- 「アプリを作成」(立即创建) ボタンをクリックして、アプリケーションの設定を開始します。
- 「アプリケーション名」(应用名称) に命名規則に従って名前を入力し、「アプリケーションアイコン」(应用图标) をアップロードします。「アプリタイプ」(应用类型) には必ず「モバイルアプリケーション」(移动应用) を選択してください。iOS アプリを構築する場合は、一意の「Bundle ID」が必要です。また、Android アプリの場合は「アプリケーション署名」(应用签名) と「アプリケーションパッケージ名」(应用包名) も必要です。
- アプリケーションの作成が完了したら、概要ページに移動します。ここで「機能を追加」(添加能力) をクリックし、「サードパーティアプリ認可」(第三方应用授权)、「会員情報の取得」(获取会员信息)、「App Alipay ログイン」(App 支付宝登录) を追加してから、Alipay サインインを有効にします。
- Alipay カスタマーセンター にアクセスし、Alipay 開発者アカウントでサインインします。トップバーの「アカウントセンター」(账号中心) をクリックし、「APPID バインディング」(APPID 绑定) に進みます(サイドバーの一番下に入口があります)。手順 4 で作成したモバイルアプリの APPID を入力して「バインディングを追加」(添加绑定) します。
- 「App Alipay ログイン」の「署名」ボタンをクリックし、ガイドに従って署名プロセスを完了します。このステップが完了すると、手順 5 で追加した機能が有効になります。
- Alipay オープンプラットフォームのコンソールページに戻り、「開発情報」(开发信息) セクションの「インターフェース署名方法(キー/証明書)」(接口加签方式(密钥/证书)) を見つけます。「設定」(设置) ボタンをクリックすると、署名方法の設定ページに移動します。「公開鍵」(公钥) が推奨される署名モードです。生成した公開鍵ファイルの内容をテキスト入力欄に入力してください。
- Alipay コンソールページ下部の「設定」(设置) ボタンをクリックして「認可リダイレクト URI」(授权回调地址) を設定します。
${your_logto_origin}/callback/${connector_id}
が Logto コアで使用されるデフォルトのリダイレクト URI です。connector_id
は Logto 管理コンソールのコネクター詳細ページのトップバーで確認できます。 - すべての手順が完了したら、Alipay コンソールページ右上の「審査提出」(提交审核) をクリックします。審査が承認されると、スムーズな Alipay サインインフローを利用できます。
ローカルマシンで openssl を使ってキーペアを生成するには、以下のコードスニペットをターミナルで実行してください。
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -outform PEM -pubout -out public.pem
Alipay アプリ設定サイトで公開鍵を入力する際は、public.pem
のヘッダーとフッターを削除し、すべての改行文字を削除して、残りの内容を「公開鍵」入力欄に貼り付けてください。
Logto Alipay Native コネクター設定のセットアップ
- Alipay コンソールワークスペース の「マイアプリケーション」(我的应用) パネルで「Web & モバイルアプリ」(网页&移动应用) タブをクリックすると、すべてのアプリケーションの APPID を確認できます。
- 前述の手順 7 で、秘密鍵と公開鍵を含むキーペアをすでに生成しています。
- Logto コネクター設定を入力します:
appId
フィールドには手順 1 で取得した APPID を入力します。privateKey
フィールドには手順 2 で生成した秘密鍵ファイルの内容を入力します。必ずすべての改行文字を '\n' に置き換えてください。秘密鍵ファイルのヘッダーとフッターは削除する必要はありません。signType
フィールドには「RSA2」を入力します。これは「Create And Configure Alipay Apps」の手順 7 で選択した「公開鍵」署名モードに対応しています。
設定タイプ
Name | Type | Enum values |
---|---|---|
appId | string | N/A |
privateKey | string | N/A |
signType | enum string | 'RSA' / 'RSA2' |
アプリで Alipay ネイティブサインインを有効にする
iOS
アプリに Logto iOS SDK を統合済みであることを前提とします。この場合、手順は非常にシンプルで、Alipay SDK のドキュメントを読む必要もありません:
1. LogtoSocialPluginAlipay
を Xcode プロジェクトに追加
フレームワークを追加します:

このプラグインには Alipay の「ミニマリスト SDK」(極簡版 SDK) が含まれています。プラグインをインポートした後、import AFServiceSDK
を直接使用できます。
2. プラグインを LogtoClient
の初期化オプションに追加
let logtoClient = LogtoClient(
useConfig: config,
socialPlugins: [LogtoSocialPluginAlipay(callbackScheme: "your-scheme")]
)
ここで callbackScheme
は カスタム URL スキーム の 1 つで、アプリに遷移できます。
Android
アプリに Logto Android SDK を統合済みであることを前提とします。この場合、手順は非常にシンプルで、Alipay SDK のドキュメントを読む必要もありません:
1. Alipay「ミニマリスト SDK」をダウンロードしてプロジェクトに追加
Logto 3rd-party Social SDKs から Alipay「ミニマリスト SDK」(極簡版 SDK) をダウンロードし、プロジェクトの app/libs
フォルダーに配置します:
project-path/app/libs/alipaySdk-15.7.9-20200727142846.aar
2. Alipay「ミニマリスト SDK」を依存関係として追加
build.gradle
ファイルを開きます:
project-path/app/build.gradle
依存関係を追加します:
dependencies {
// ...
implementation(files("./libs/alipaySdk-15.7.9-20200727142846.aar")) // kotlin-script
// または
implementation files('./libs/alipaySdk-15.7.9-20200727142846.aar') // groovy-script
}
設定を保存する
Logto コネクター設定エリアで必要な値をすべて記入したことを確認してください。「保存して完了」または「変更を保存」をクリックすると、Alipay (Native) コネクターが利用可能になります。
サインイン体験で Alipay (Native) コネクターを有効にする
ソーシャルコネクターを正常に作成したら、サインイン体験で「Alipay (Native) で続行」ボタンとして有効にすることができます。
- Console > サインイン体験 > サインアップとサインイン に移動します。
- (オプション)ソーシャルログインのみが必要な場合は、サインアップ識別子に「該当なし」を選択します。
- 設定済みの Alipay (Native) コネクターを「ソーシャルサインイン」セクションに追加します。

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