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

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

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

この記事では、.NET Core (Razor Pages)Logto を使用して、Alipay (Web) サインイン体験(ユーザー認証 (Authentication))を迅速に構築する手順を説明します。

前提条件

  • 稼働中の Logto インスタンス。紹介ページ をチェックして始めてください。
  • .NET Core (Razor Pages) の基本的な知識。
  • 使用可能な Alipay (Web) アカウント。

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" セクションをクリックします。".NET Core (Razor Pages)" フレームワークカードをクリックして、アプリケーションの作成を開始します。 Frameworks
  3. アプリケーション名を入力します。例:「Bookstore」と入力し、「Create application」をクリックします。

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

.NET Core (Razor Pages) SDK を統合する

ヒント:
  • 次のデモンストレーションは .NET Core 8.0 を基に構築されています。SDK は .NET 6.0 以上に対応しています。
  • .NET Core のサンプルプロジェクトは GitHub リポジトリ で利用可能です。

インストール

プロジェクトに NuGet パッケージを追加します:

dotnet add package Logto.AspNetCore.Authentication

Logto 認証 (Authentication) を追加する

Startup.cs(または Program.cs)を開き、次のコードを追加して Logto 認証 (Authentication) サービスを登録します:

Program.cs
using Logto.AspNetCore.Authentication;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddLogtoAuthentication(options =>
{
options.Endpoint = builder.Configuration["Logto:Endpoint"]!;
options.AppId = builder.Configuration["Logto:AppId"]!;
options.AppSecret = builder.Configuration["Logto:AppSecret"];
});

AddLogtoAuthentication メソッドは次のことを行います:

  • デフォルトの認証 (Authentication) スキームを LogtoDefaults.CookieScheme に設定します。
  • デフォルトのチャレンジスキームを LogtoDefaults.AuthenticationScheme に設定します。
  • デフォルトのサインアウトスキームを LogtoDefaults.AuthenticationScheme に設定します。
  • 認証 (Authentication) スキームにクッキーと OpenID Connect 認証 (Authentication) ハンドラーを追加します。

サインインおよびサインアウトフロー

進む前に、.NET Core 認証 (Authentication) ミドルウェアにおける混乱しやすい用語を 2 つ明確にする必要があります:

  1. CallbackPath: ユーザーがサインインした後に Logto がユーザーをリダイレクトする URI (Logto における「リダイレクト URI」)
  2. RedirectUri: Logto 認証 (Authentication) ミドルウェアで必要なアクションが実行された後にリダイレクトされる URI

サインインプロセスは次のように示されます:


同様に、.NET Core にはサインアウトフローのための SignedOutCallbackPathRedirectUri もあります。

明確にするために、これらを次のように呼びます:

使用する用語.NET Core 用語
Logto リダイレクト URICallbackPath
Logto サインアウト後リダイレクト URISignedOutCallbackPath
アプリケーションリダイレクト URIRedirectUri

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

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

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

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

注記:

以下のコードスニペットでは、あなたのアプリが http://localhost:3000/ で実行されていると仮定しています。

まず、Logto リダイレクト URI を設定しましょう。次の URI を Logto アプリケーション詳細ページの「リダイレクト URI」リストに追加します:

http://localhost:3000/Callback

Logto サインアウト後リダイレクト URI を設定するには、次の URI を Logto アプリケーション詳細ページの「サインアウト後リダイレクト URI」リストに追加します:

http://localhost:3000/SignedOutCallback

デフォルトパスを変更する

Logto リダイレクト URI にはデフォルトパス /Callback があり、Logto サインアウト後リダイレクト URI にはデフォルトパス /SignedOutCallback があります。

特別な要件がない場合は、そのままにしておくことができます。変更したい場合は、LogtoOptionsCallbackPathSignedOutCallbackPath プロパティを設定できます:

Program.cs
builder.Services.AddLogtoAuthentication(options =>
{
// 他の設定...
options.CallbackPath = "/Foo";
options.SignedOutCallbackPath = "/Bar";
});

Logto アプリケーション詳細ページの値もそれに応じて更新することを忘れないでください。

サインイン / サインアウトボタンを実装する

まず、PageModel にハンドラーメソッドを追加します。例えば:

Pages/Index.cshtml.cs
public class IndexModel : PageModel
{
public async Task OnPostSignInAsync()
{
await HttpContext.ChallengeAsync(new AuthenticationProperties
{
RedirectUri = "/"
});
}

public async Task OnPostSignOutAsync()
{
await HttpContext.SignOutAsync(new AuthenticationProperties
{
RedirectUri = "/"
});
}
}

次に、Razor ページにボタンを追加します:

Pages/Index.cshtml
<p>Is authenticated: @User.Identity?.IsAuthenticated</p>
<form method="post">
@if (User.Identity?.IsAuthenticated == true) {
<button type="submit" asp-page-handler="SignOut">Sign out</button>
} else {
<button type="submit" asp-page-handler="SignIn">Sign in</button>
}
</form>

ユーザーが認証 (Authentication) されていない場合は「Sign in」ボタンが表示され、認証 (Authentication) されている場合は「Sign out」ボタンが表示されます。

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

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

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

Alipay (Web) コネクターを追加する

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

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

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

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

Alipay web app を設定する

Alipay 開発者アカウントの登録

Alipay 開発者アカウントを登録 してください(まだお持ちでない場合)。

Alipay アプリの作成と設定

  1. Alipay コンソール に、先ほど登録したアカウントでサインインします。
  2. 「マイアプリケーション」(我的应用) パネルの「Web & Mobile Apps」(网页&移动应用) タブに移動します。
  3. 「アプリを作成」(立即创建) ボタンをクリックして、アプリケーションの設定を開始します。
  4. 「アプリケーション名」(应用名称) に命名規則に従って名前を入力し、「アプリケーションアイコン」(应用图标) をアップロードします。「アプリタイプ」(应用类型) には必ず「Web アプリケーション」(网页应用) を選択してください。
  5. アプリケーションの作成が完了したら、概要ページに移動します。ここで「機能を追加」(添加能力) をクリックし、「サードパーティアプリ認可」(第三方应用授权)、「会員情報の取得」(获取会员信息)、「App Alipay ログイン」(App 支付宝登录) を追加してから、Alipay サインインを有効にします。
  6. Alipay カスタマーセンター にアクセスし、Alipay 開発者アカウントでサインインします。トップバーの「アカウントセンター」(账号中心) をクリックし、サイドバー下部にある「APPID バインディング」(APPID 绑定) に進みます。手順 4 で作成した Web アプリケーションの APPID を入力して「バインディングを追加」(添加绑定) します。
  7. 「App Alipay ログイン」の「署名」ボタンをクリックし、ガイドに従って署名プロセスを完了します。この手順が完了すると、手順 5 で追加した機能が有効になります。
  8. Alipay オープンプラットフォームのコンソールページに戻り、「開発情報」(开发信息) セクションの「インターフェース署名方式(キー/証明書)」(接口加签方式(密钥/证书)) を見つけます。「設定」(设置) ボタンをクリックすると、署名方式の設定ページに移動します。「公開鍵」(公钥) が推奨される署名モードであり、生成した公開鍵ファイルの内容をテキスト入力欄に入力します。
  9. Alipay コンソールページ下部の「設定」(设置) ボタンをクリックして「認可リダイレクト URI」(授权回调地址) を設定します。${your_logto_origin}/callback/${connector_id} は Logto コアで使用されるデフォルトのリダイレクト URI です。connector_id は Logto 管理コンソールのコネクター詳細ページのトップバーで確認できます。
  10. すべての手順が完了したら、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 Web コネクター設定のセットアップ

  1. Alipay コンソールワークスペース の「マイアプリケーション」(我的应用) パネルで「Web & Mobile Apps」(网页&移动应用) タブをクリックすると、すべてのアプリケーションの APPID を確認できます。
  2. 前述の手順 7 で、秘密鍵と公開鍵を含むキーペアをすでに生成しています。
  3. Logto コネクター設定を入力します:
    • appId フィールドには、手順 1 で取得した APPID を入力します。
    • privateKey フィールドには、手順 2 で生成した秘密鍵ファイルの内容を入力します。必ずすべての改行を '\n' に置き換え、秘密鍵ファイルのヘッダーとフッターは削除しないでください。
    • signType フィールドには、手順 7 の「Create And Configure Alipay Apps」で選択した「公開鍵」署名モードにより 'RSA2' を入力します。
    • charset フィールドには 'gbk' または 'utf8' を入力します。このフィールドは省略可能で、デフォルト値は 'utf8' です。
    • scope フィールドには 'auth_base' または 'auth_user' を入力します。このフィールドも省略可能で、デフォルト値は 'auth_user' です。異なる値の 違い を確認できます。

設定タイプ

NameTypeEnum values
appIdstringN/A
privateKeystringN/A
signTypeenum string'RSA' / 'RSA2'
charsetenum string (OPTIONAL)'gbk' / 'utf8' / undefined
scopeenum string (OPTIONAL)'auth_user' / 'auth_base'

設定を保存する

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

サインイン体験で Alipay (Web) コネクターを有効にする

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

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

テストと検証

.NET Core (Razor Pages) アプリに戻ります。これで Alipay (Web) を使用してサインインできるはずです。お楽しみください!

さらなる読み物

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

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

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

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