Logto は、モダンなアプリや SaaS 製品向けに設計された Auth0 の代替です。 Cloud と オープンソース の両方のサービスを提供し、アイデンティティと管理 (IAM) システムを迅速に立ち上げるのに役立ちます。認証 (Authentication)、認可 (Authorization)、マルチテナント管理を すべて一つに まとめて楽しんでください。
Logto Cloud で無料の開発テナントから始めることをお勧めします。これにより、すべての機能を簡単に探索できます。
この記事では、.NET Core (MVC) と Logto を使用して、Microsoft Entra ID OIDC enterprise SSO サインイン体験(ユーザー認証 (Authentication))を迅速に構築する手順を説明します。
前提条件
- 稼働中の Logto インスタンス。紹介ページ をチェックして始めてください。
- .NET Core (MVC) の基本的な知識。
- 使用可能な Microsoft Entra ID OIDC enterprise SSO アカウント。
Create an application in Logto
Logto は OpenID Connect (OIDC) 認証 (Authentication) と OAuth 2.0 認可 (Authorization) に基づいています。これは、複数のアプリケーション間でのフェデレーテッドアイデンティティ管理をサポートし、一般的にシングルサインオン (SSO) と呼ばれます。
あなたの 従来の Web アプリケーションを作成するには、次の手順に従ってください:
- Logto コンソール を開きます。「Get started」セクションで、「View all」リンクをクリックしてアプリケーションフレームワークのリストを開きます。あるいは、Logto Console > Applications に移動し、「Create application」ボタンをクリックします。
- 開いたモーダルで、左側のクイックフィルターチェックボックスを使用して、利用可能なすべての "従来の Web" フレームワークをフィルタリングするか、"従来の Web" セクションをクリックします。".NET Core (MVC)" フレームワークカードをクリックして、アプリケーションの作成を開始します。
- アプリケーション名を入力します。例:「Bookstore」と入力し、「Create application」をクリックします。
🎉 タダーン!Logto で最初のアプリケーションを作成しました。詳細な統合ガイドを含むお祝いページが表示されます。ガイドに従って、アプリケーションでの体験を確認してください。
Integrate .NET Core (MVC) 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) サービスを登録します:
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 つ明確にする必要があります:
- CallbackPath: ユーザーがサインインした後に Logto がユーザーをリダイレクトする URI (Logto における「リダイレクト URI」)
- RedirectUri: Logto 認証 (Authentication) ミドルウェアで必要なアクションが実行された後にリダイレクトされる URI
サインインプロセスは次のように示されます:
同様に、.NET Core にはサインアウトフローのための SignedOutCallbackPath と RedirectUri もあります。
明確にするために、これらを次のように呼びます:
使用する用語 | .NET Core 用語 |
---|---|
Logto リダイレクト URI | CallbackPath |
Logto サインアウト後リダイレクト URI | SignedOutCallbackPath |
アプリケーションリダイレクト URI | RedirectUri |
リダイレクトベースのサインインについて
- この認証 (Authentication) プロセスは OpenID Connect (OIDC) プロトコルに従い、Logto はユーザーのサインインを保護するために厳格なセキュリティ対策を講じています。
- 複数のアプリがある場合、同じアイデンティティプロバイダー (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
があります。
特別な要件がない場合は、そのままにしておくことができます。変更したい場合は、LogtoOptions
の CallbackPath
と SignedOutCallbackPath
プロパティを設定できます:
builder.Services.AddLogtoAuthentication(options =>
{
// 他の設定...
options.CallbackPath = "/Foo";
options.SignedOutCallbackPath = "/Bar";
});
Logto アプリケーション詳細ページの値もそれに応じて更新することを忘れないでください。
サインイン / サインアウトボタンを実装する
まず、Controller
にアクションメソッドを追加します。例えば:
public class HomeController : Controller
{
public IActionResult SignIn()
{
// これにより、ユーザーは Logto のサインインページにリダイレクトされます。
return Challenge(new AuthenticationProperties { RedirectUri = "/" });
}
// `ControllerBase.SignOut` メソッドとの競合を避けるために `new` キーワードを使用します
new public IActionResult SignOut()
{
// これにより、認証 (Authentication) クッキーがクリアされ、ユーザーは Logto のサインアウトページにリダイレクトされ、
// Logto セッションもクリアされます。
return SignOut(new AuthenticationProperties { RedirectUri = "/" });
}
}
次に、リンクを View に追加します:
<p>Is authenticated: @User.Identity?.IsAuthenticated</p>
@if (User.Identity?.IsAuthenticated == true) {
<a asp-controller="Home" asp-action="SignOut">Sign out</a>
} else {
<a asp-controller="Home" asp-action="SignIn">Sign in</a>
}
ユーザーが認証 (Authentication) されていない場合は「Sign in」リンクが表示され、認証 (Authentication) されている場合は「Sign out」リンクが表示されます。
チェックポイント: アプリケーションをテストする
これで、アプリケーションをテストできます:
- アプリケーションを実行すると、サインインボタンが表示されます。
- サインインボタンをクリックすると、SDK がサインインプロセスを初期化し、Logto のサインインページにリダイレクトされます。
- サインインすると、アプリケーションに戻り、サインアウトボタンが表示されます。
- サインアウトボタンをクリックして、トークンストレージをクリアし、サインアウトします。
Add Microsoft Entra ID OIDC enterprise SSO connector
アクセス管理を簡素化し、大規模なクライアント向けにエンタープライズレベルの保護を得るために、.NET Core (MVC) をフェデレーテッドアイデンティティプロバイダーとして接続します。Logto エンタープライズシングルサインオン (SSO) コネクターは、いくつかのパラメーター入力を許可することで、この接続を数分で確立するのに役立ちます。
エンタープライズ SSO コネクターを追加するには、次の手順に従ってください:
- Logto コンソール > エンタープライズ SSO に移動します。

- 「エンタープライズコネクターを追加」ボタンをクリックし、SSO プロバイダーのタイプを選択します。Microsoft Entra ID (Azure AD)、Google Workspace、Okta の事前構築されたコネクターから選択するか、標準の OpenID Connect (OIDC) または SAML プロトコルを使用してカスタム SSO 接続を作成します。
- 一意の名前を指定します(例:Acme Company の SSO サインイン)。

- 「接続」タブで IdP と接続を構成します。各コネクタータイプのガイドを上記で確認してください。

- 「体験 (Experience)」タブで SSO 体験と企業の メールドメイン をカスタマイズします。SSO 対応のメールドメインでサインインするユーザーは、SSO 認証にリダイレクトされます。

- 変更を保存します。
Set up Azure AD SSO application
ステップ 1: Microsoft EntraID OIDC アプリケーションを作成する
-
Microsoft Entra 管理センター にアクセスし、管理者としてサインインします。
-
Identity > Applications > App registrations に移動します。

-
New registration
を選択します。 -
アプリケーション名を入力し、アプリケーションに適したアカウントタイプを選択します。
-
アプリケーションプラットフォームとして
Web
を選択します。 -
Logto の SSO 設定ページから
redirect URI
をコピーして貼り付けます。redirect URI
は、ユーザーが Microsoft Entra ID で認証された後にリダイレクトされる URL です。

Register
をクリックしてアプリケーションを作成します。
ステップ 2: Logto で Microsoft Entra ID OIDC SSO を設定する
Microsoft Entra OIDC アプリケーションの作成が完了したら、IdP 設定情報を Logto に提供する必要があります。Logto コンソールの Connection
タブに移動し、以下の設定を入力してください:
- クライアント ID:Microsoft Entra によって OIDC アプリケーションに割り当てられた一意の識別子です。この識別子は、OIDC フロー中に Logto がアプリケーションを識別し認証するために使用します。アプリケーションの概要ページで
Application (client) ID
として確認できます。

- クライアントシークレット:新しいクライアントシークレットを作成し、その値を Logto にコピーしてください。このシークレットは、OIDC アプリケーションの認証および Logto と IdP 間の通信のセキュリティ確保に使用されます。

-
発行者 (Issuer):発行者 URL は、IdP の一意の識別子であり、OIDC アイデンティティプロバイダーの場所を指定します。これは OIDC 設定の重要な部分であり、Logto が必要なエンドポイントを発見するのに役立ちます。
これらの OIDC エンドポイントを手動で入力する代わりに、Logto は発行者 URL を利用して IdP のディスカバーエンドポイントにアクセスし、必要な設定や IdP エンドポイントを自動的に取得します。
発行者 URL を取得するには、アプリケーション概要ページの
Endpoints
セクションで確認できます。OpenID Connect metadata document
エンドポイントを見つけ、その URL から 末尾の.well-known/openid-configuration
を除いた部分 をコピーしてください。Logto は OIDC 設定取得時に自動的に.well-known/openid-configuration
を発行者 URL に付加します。

- スコープ (Scope)(任意):Logto はすべてのリクエストに必要なスコープ(
openid
、profile
、email
)を自動的に含めます。アプリケーションが IdP から追加の権限やアクセスレベルを必要とする場合は、スペース区切りで追加のスコープを指定できます。
保存
をクリックして設定プロセスを完了してください。
ステップ 3: 追加スコープ(オプション)
スコープ (Scopes) は、アプリがユーザーから要求する権限 (Permissions) を定義し、アプリが Microsoft Entra ID アカウントからアクセスできるデータを制御します。Microsoft Graph の権限 (Permissions) を要求するには、両方の側で設定が必要です:
Microsoft Entra 管理センターで:
- Microsoft Entra ID > アプリ登録 に移動し、アプリケーションを選択します。
- API 権限 > 権限の追加 > Microsoft Graph > 委任された権限 に進みます。
- アプリに必要な権限 (Permissions) のみを選択します:
- OpenID 権限 (Permissions):
openid
(必須)- ユーザーのサインインprofile
(必須)- ユーザーの基本プロフィールの表示email
(必須)- ユーザーのメールアドレスの表示offline_access
(オプション)- Logto コネクターで Microsoft API への永続的なアクセス用のトークン保存 を有効にし、Microsoft Graph API への長期間アクセスのためにリフレッシュ トークン (Refresh token) を取得する必要がある場合のみ必要です。
- API アクセス(オプション):アプリに必要な追加の権限 (Permissions) を追加します。一般的な Microsoft Graph 権限 (Permissions) には
Mail.Read
、Calendars.Read
、Files.Read
などがあります。利用可能な権限 (Permissions) については Microsoft Graph permissions reference を参照してください。
- OpenID 権限 (Permissions):
- 権限の追加 をクリックして選択を確定します。
- アプリが特定の権限 (Permissions) に管理者の同意が必要な場合は、[組織名] のために管理者の同意を付与 をクリックします。

Logto Microsoft Entra ID コネクターで:
- Logto は、基本的なユーザーアイデンティティ情報を取得するために
openid
、profile
、email
スコープ (Scopes) を自動的に含めます。基本的なユーザー情報のみが必要な場合は、Scopes
フィールドを空白のままにできます。 - Microsoft API への永続的なアクセス用にトークンを保存する場合は、
Scopes
フィールドにoffline_access
を追加します。このスコープ (Scope) により、長期間の API アクセス用のリフレッシュ トークン (Refresh token) が有効になります。 - Microsoft Graph からさらに多くのデータを要求する場合は、
Scopes
フィールドに追加のスコープ (Scopes)(スペース区切り)を追加します。標準のスコープ名を使用してください。例:User.Read Mail.Read Calendars.Read
アプリがこれらのスコープ (Scopes) を要求して Microsoft Graph API へアクセスし操作を行う場合は、Logto Microsoft Entra ID コネクターで Microsoft API への永続的なアクセス用のトークン保存 を有効にしてください。詳細は次のセクションを参照してください。
ステップ 4: Microsoft API へアクセスするためのトークンを保存する(オプション)
Microsoft Graph APIs へアクセスし、ユーザーの認可 (Authorization) で操作を実行したい場合、Logto は特定の API スコープとトークンを取得・保存する必要があります。
- Microsoft Entra 管理センターの API 権限設定および Logto Microsoft Entra ID コネクターで必要なスコープを追加します。
- Logto Microsoft Entra ID コネクターで 永続的な API アクセスのためにトークンを保存 を有効にします。Logto は Microsoft のアクセス トークンおよびリフレッシュ トークンを Secret Vault に安全に保存します。
- リフレッシュ トークンが返されるようにするには、Microsoft Entra ID アプリケーションの権限に
offline_access
スコープを追加し、Logto Microsoft Entra ID コネクターのスコープにも含めてください。このスコープにより、アプリケーションは長期間リソースへのアクセスを維持できます。
ステップ 5: メールドメインを設定し、SSO コネクターを有効化する
コネクターの体験 (Experience) タブで、組織のメール domains
を入力してください。これにより、これらのユーザーに対して SSO コネクターが認証 (Authentication) 方法として有効になります。
指定したドメインのメールアドレスを持つユーザーは、唯一の認証 (Authentication) 方法として SSO コネクターのみを利用できるように制限されます。
Save your configuration
Logto コネクター設定エリアで必要な値をすべて記入したことを確認してください。「保存して完了」または「変更を保存」をクリックすると、Microsoft Entra ID OIDC enterprise SSO コネクターが利用可能になります。
Enable Microsoft Entra ID OIDC enterprise SSO connector in Sign-in Experience
エンタープライズコネクターを個別に設定する必要はありません。Logto は、ワンクリックでアプリケーションに SSO 統合を簡素化します。
- 移動先: Console > サインイン体験 > サインアップとサインイン。
- 「エンタープライズシングルサインオン (SSO)」トグルを有効にします。
- 変更を保存します。
有効にすると、サインインページに「シングルサインオン (SSO)」ボタンが表示されます。SSO が有効なメールドメインを持つエンタープライズユーザーは、エンタープライズアイデンティティプロバイダー (IdP) を使用してサービスにアクセスできます。


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