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

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

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

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

前提条件

  • 実行中の Logto インスタンス。始めるには 紹介ページ をご覧ください。
  • Python の基本的な知識。
  • 使用可能な OIDC enterprise SSO アカウント。

Create an application in Logto

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

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

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

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

Integrate Flask SDK

ヒント:
  • この例では Flask を使用していますが、概念は他のフレームワークでも同じです。
  • Python のサンプルプロジェクトは、私たちの Python SDK リポジトリ で利用可能です。
  • Logto SDK はコルーチンを活用しているため、非同期関数を呼び出す際には await を使用することを忘れないでください。

インストール

プロジェクトのルートディレクトリで実行します:

pip install logto # または `poetry add logto` などを使用

LogtoClient の初期化

まず、Logto の設定を作成します:

client.py
from logto import LogtoClient, LogtoConfig

client = LogtoClient(
LogtoConfig(
endpoint="https://you-logto-endpoint.app", # あなたの Logto エンドポイントに置き換えてください
appId="replace-with-your-app-id",
appSecret="replace-with-your-app-secret",
),
)
ヒント:

「App Secret」は管理コンソールのアプリケーション詳細ページから見つけてコピーできます:

App Secret

また、デフォルトのメモリストレージを永続的なストレージに置き換えます。例えば:

client.py
from logto import LogtoClient, LogtoConfig, Storage
from flask import session
from typing import Union

class SessionStorage(Storage):
def get(self, key: str) -> Union[str, None]:
return session.get(key, None)

def set(self, key: str, value: Union[str, None]) -> None:
session[key] = value

def delete(self, key: str) -> None:
session.pop(key, None)

client = LogtoClient(
LogtoConfig(...),
storage=SessionStorage(),
)

詳細については、Storage を参照してください。

サインインとサインアウトの実装

あなたの Web アプリケーションで、ユーザーからのサインインリクエストを適切に処理するためのルートを追加します。例として /sign-in を使用します:

flask.py
@app.route("/sign-in")
async def sign_in():
# サインイン URL を取得し、ユーザーをその URL にリダイレクトします
return redirect(await client.signIn(
redirectUri="http://localhost:3000/callback",
))

このアプリケーションの Logto コンソールで設定したコールバック URL に http://localhost:3000/callback を置き換えてください。

最初の画面にサインアップページを表示したい場合は、interactionModesignUp に設定できます:

flask.py
@app.route("/sign-in")
async def sign_in():
return redirect(await client.signIn(
redirectUri="http://localhost:3000/callback",
interactionMode="signUp", # 最初の画面にサインアップページを表示
))

これで、ユーザーが http://localhost:3000/sign-in を訪れるたびに、新しいサインイン試行が開始され、ユーザーは Logto のサインインページにリダイレクトされます。

注意 サインインルートを作成することは、サインイン試行を開始する唯一の方法ではありません。signIn メソッドを使用してサインイン URL を取得し、ユーザーをその URL にリダイレクトすることも常に可能です。

ユーザーがサインアウトリクエストを行った後、Logto はセッション内のすべてのユーザー認証情報をクリアします。

Python セッションと Logto セッションをクリーンアップするために、次のようにサインアウトルートを実装できます:

flask.py
@app.route("/sign-out")
async def sign_out():
return redirect(
# サインアウトが成功した後、ユーザーをホームページにリダイレクト
await client.signOut(postLogoutRedirectUri="http://localhost:3000/")
)

認証 (Authentication) ステータスの処理

Logto SDK では、client.isAuthenticated() を使用して認証 (Authentication) 状態を確認できます。ユーザーがサインインしている場合、この値は true になり、そうでない場合は false になります。

ここでは、デモ用にシンプルなホームページを実装します:

  • ユーザーがサインインしていない場合、サインインボタンを表示します。
  • ユーザーがサインインしている場合、サインアウトボタンを表示します。
@app.route("/")
async def home():
if client.isAuthenticated() is False:
return "認証されていません <a href='/sign-in'>サインイン</a>"
return "認証されています <a href='/sign-out'>サインアウト</a>"

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

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

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

Add OIDC enterprise SSO connector

To simplify access management and gain enterprise-level safeguards for your big clients, connect with Flask as a federated identity provider. The Logto enterprise SSO connector helps you establish this connection in minutes by allowing several parameter inputs.

To add an enterprise SSO connector, simply follow these steps:

  1. Navigate to Logto console > Enterprise SSO.

SSO page

  1. Click "Add enterprise connector" button and choose your SSO provider type. Choose from prebuilt connectors for Microsoft Entra ID (Azure AD), Google Workspace, and Okta, or create a custom SSO connection using the standard OpenID Connect (OIDC) or SAML protocol.
  2. Provide a unique name (e.g., SSO sign-in for Acme Company).

Select your SSO provider

  1. Configure the connection with your IdP in the "Connection" tab. Check the guides above for each connector types.

SSO connection

  1. Customize the SSO experience and enterprise’s email domain in the "Experience" tab. Users sign in with the SSO-enabled email domain will be redirected to SSO authentication.

SSO experience

  1. Save changes.

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

You don’t need to configure enterprise connectors individually, Logto simplifies SSO integration into your applications with just one click.

  1. Navigate to: Console > Sign-in experience > Sign-up and sign-in.
  2. Enable the "Enterprise SSO" toggle.
  3. Save changes.

Once enabled, a "Single Sign-On" button will appear on your sign-in page. Enterprise users with SSO-enabled email domains can access your services using their enterprise identity providers (IdPs).

Auto detect SSO sign-in via email domain Navigate to SSO sign-in via manually click link button

To learn more about the SSO user experience, including SP-initiated SSO and IdP-initiated SSO, refer to User flows: Enterprise SSO.

Testing and Validation

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

Further readings

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

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

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

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