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

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

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

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

前提条件

Create an application in Logto

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

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

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

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

Integrate .NET Core (Blazor WebAssembly) SDK

ヒント:
  • 以下のデモンストレーションは、.NET Core 8.0 と Blorc.OpenIdConnect に基づいて構築されています。
  • .NET Core のサンプルプロジェクトは GitHub リポジトリ で入手可能です。

インストール

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

dotnet add package Blorc.OpenIdConnect

スクリプト参照を追加する

index.html ファイルに Blorc.Core/injector.js を含めます:

index.html
<head>
<!-- ... -->
<script src="_content/Blorc.Core/injector.js"></script>
<!-- ... -->
</head>

サービスを登録する

次のコードを Program.cs ファイルに追加します:

Program.cs
using Blorc.OpenIdConnect;
using Blorc.Services;

builder.Services.AddBlorcCore();
builder.Services.AddAuthorizationCore();
builder.Services.AddBlorcOpenIdConnect(
options =>
{
builder.Configuration.Bind("IdentityServer", options);
});

var webAssemblyHost = builder.Build();

await webAssemblyHost
.ConfigureDocumentAsync(async documentService =>
{
await documentService.InjectBlorcCoreJsAsync();
await documentService.InjectOpenIdConnectAsync();
});

await webAssemblyHost.RunAsync();
備考:

Microsoft.AspNetCore.Components.WebAssembly.Authentication パッケージを使用する必要はありません。Blorc.OpenIdConnect パッケージが認証 (Authentication) プロセスを処理します。

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

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

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

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

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

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


注記:

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

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

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

Logto Console のリダイレクト URI

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

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

アプリケーションを設定する

次のコードを appsettings.json ファイルに追加します:

appsettings.json
{
// ...
IdentityServer: {
Authority: 'https://<your-logto-endpoint>/oidc',
ClientId: '<your-logto-app-id>',
PostLogoutRedirectUri: 'http://localhost:3000/',
RedirectUri: 'http://localhost:3000/callback',
ResponseType: 'code',
Scope: 'openid profile', // 必要に応じてスコープを追加
},
}

RedirectUriPostLogoutRedirectUri を Logto アプリケーション設定の許可されたリダイレクト URI のリストに追加することを忘れないでください。これらはどちらも WASM アプリケーションの URL です。

AuthorizeView コンポーネントを追加する

認証 (Authentication) が必要な Razor ページに AuthorizeView コンポーネントを追加します。Home.razor ページであると仮定します:

Pages/Home.razor
@using Microsoft.AspNetCore.Components.Authorization
@page "/"

<AuthorizeView>
<Authorized>
@* サインイン済みビュー *@
<button @onclick="OnLogoutButtonClickAsync">
サインアウト
</button>
</Authorized>
<NotAuthorized>
@* 未認証ビュー *@
<button @onclick="OnLoginButtonClickAsync">
サインイン
</button>
</NotAuthorized>
</AuthorizeView>

認証 (Authentication) を設定する

Home.razor.cs ファイルに(存在しない場合は作成して)次のコードを追加します:

Pages/Home.razor.cs
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Blorc.OpenIdConnect;
using Microsoft.AspNetCore.Components.Authorization;

[Authorize]
public partial class Home : ComponentBase
{
[Inject]
public required IUserManager UserManager { get; set; }

public User<Profile>? User { get; set; }

[CascadingParameter]
protected Task<AuthenticationState>? AuthenticationStateTask { get; set; }

protected override async Task OnInitializedAsync()
{
User = await UserManager.GetUserAsync<User<Profile>>(AuthenticationStateTask!);
}

private async Task OnLoginButtonClickAsync(MouseEventArgs obj)
{
await UserManager.SignInRedirectAsync();
}

private async Task OnLogoutButtonClickAsync(MouseEventArgs obj)
{
await UserManager.SignOutRedirectAsync();
}
}

ユーザーが認証 (Authentication) されると、User プロパティにユーザー情報が設定されます。

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

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

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

Add OIDC enterprise SSO connector

アクセス管理を簡素化し、大規模なクライアント向けにエンタープライズレベルの保護を得るために、.NET Core (Blazor WebAssembly) をフェデレーテッドアイデンティティプロバイダーとして接続します。Logto エンタープライズシングルサインオン (SSO) コネクターは、いくつかのパラメーター入力を許可することで、この接続を数分で確立するのに役立ちます。

エンタープライズ SSO コネクターを追加するには、次の手順に従ってください:

  1. Logto コンソール > エンタープライズ SSO に移動します。
SSO ページ
  1. 「エンタープライズコネクターを追加」ボタンをクリックし、SSO プロバイダーのタイプを選択します。Microsoft Entra ID (Azure AD)、Google Workspace、Okta の事前構築されたコネクターから選択するか、標準の OpenID Connect (OIDC) または SAML プロトコルを使用してカスタム SSO 接続を作成します。
  2. 一意の名前を指定します(例:Acme Company の SSO サインイン)。
SSO プロバイダーを選択
  1. 「接続」タブで IdP と接続を構成します。各コネクタータイプのガイドを上記で確認してください。
SSO 接続
  1. 「体験 (Experience)」タブで SSO 体験と企業の メールドメイン をカスタマイズします。SSO 対応のメールドメインでサインインするユーザーは、SSO 認証にリダイレクトされます。
SSO 体験
  1. 変更を保存します。

Set up IdP 上の OIDC アプリケーション

ステップ 1: IdP で OIDC アプリケーションを作成する

OIDC SSO 統合を開始するには、IdP 側でアプリケーションを作成します。Logto サーバーから次の設定を提供する必要があります。

  • コールバック URI: Logto コールバック URI は、リダイレクト URI または返信 URL とも呼ばれ、IdP が認証に成功した後にユーザーのブラウザをリダイレクトする特定のエンドポイントまたは URL です。ユーザーが IdP での認証に成功すると、IdP はユーザーのブラウザをこの指定された URI に認可コードと共にリダイレクトします。Logto は、この URI から受け取った認可コードに基づいて認証プロセスを完了します。

IdP の OIDC アプリケーション設定フォームに Logto コールバック URI を入力し、アプリケーションの作成を続行します。(ほとんどの OIDC IdP は、選択可能なさまざまなアプリケーションタイプを提供しています。Logto で Web ベースの SSO コネクターを作成するには、Web Application タイプを選択してください。)

ステップ 2: Logto で OIDC SSO を設定する

IdP 側で OIDC アプリケーションを正常に作成した後、IdP の設定を Logto に戻す必要があります。Connection タブに移動し、次の設定を入力してください:

  • Client ID: IdP によってあなたの OIDC アプリケーションに割り当てられた一意の識別子。この識別子は、OIDC フロー中に Logto がアプリケーションを識別し認証するために使用されます。
  • Client Secret: Logto と IdP の間で共有される機密の秘密。この秘密は、OIDC アプリケーションを認証し、Logto と IdP 間の通信を保護するために使用されます。
  • 発行者 (Issuer): IdP の一意の識別子である発行者 URL。OIDC アイデンティティプロバイダーの場所を指定します。これは OIDC 設定の重要な部分であり、Logto が必要なエンドポイントを発見するのに役立ちます。 設定プロセスを簡単にするために、Logto は必要な OIDC エンドポイントと設定を自動的に取得します。これは、提供された発行者を利用し、IdP の OIDC 発見エンドポイントに呼び出しを行うことで行われます。発行者エンドポイントが有効で正確に設定されていることを確認し、Logto が必要な情報を正しく取得できるようにすることが重要です。 取得リクエストが成功した後、発行者セクションの下に解析された IdP 設定が表示されるはずです。
  • スコープ (Scope): OIDC 認証プロセス中に Logto が要求する権限またはアクセスレベルを定義するスペースで区切られた文字列のリスト。スコープパラメーターを使用して、Logto が IdP から要求する情報とアクセスを指定できます。 スコープパラメーターはオプションです。カスタムスコープ設定に関係なく、Logto は常に openidprofile、および email スコープを IdP に送信します。 これは、Logto が IdP からユーザーのアイデンティティ情報とメールアドレスを適切に取得できるようにするためです。IdP からより多くの情報を要求するために、スコープパラメーターに追加のスコープを追加することができます。

ステップ 3: メールドメインを設定し、SSO コネクターを有効にする

Logto のコネクターの SSO 体験 タブで、組織の メールドメイン を提供してください。これにより、これらのユーザーに対する認証 (Authentication) 方法として SSO コネクターが有効になります。

指定されたドメインのメールアドレスを持つユーザーは、唯一の認証 (Authentication) 方法としてあなたの SSO コネクターを使用するようにリダイレクトされます。

Save your configuration

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

Enable OIDC enterprise SSO connector in Sign-in Experience

エンタープライズコネクターを個別に設定する必要はありません。Logto は、ワンクリックでアプリケーションに SSO 統合を簡素化します。

  1. 移動先: Console > サインイン体験 > サインアップとサインイン
  2. 「エンタープライズシングルサインオン (SSO)」トグルを有効にします。
  3. 変更を保存します。

有効にすると、サインインページに「シングルサインオン (SSO)」ボタンが表示されます。SSO が有効なメールドメインを持つエンタープライズユーザーは、エンタープライズアイデンティティプロバイダー (IdP) を使用してサービスにアクセスできます。

メールドメインを介して SSO サインインを自動検出 リンクボタンを手動でクリックして SSO サインインに移動

SP 主導の SSO や IdP 主導の SSO を含む SSO ユーザー体験について詳しくは、ユーザーフロー: エンタープライズシングルサインオン (SSO) を参照してください。

Testing and Validation

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

Further readings

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

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

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

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