• management-api
  • api
  • logto
  • machine-to-machine
  • jwt

Logto Management APIの使用法:ステップバイステップガイド

様々なシナリオであなたのアプリケーションにLogto Management APIを使用する方法を学びましょう。

Gao
Gao
Founder

LogtoはWebベースのコンソールを提供しており、ID管理が可能ですが、ワークフローを自動化したい場合やプログラムでLogtoにアクセスしたい場合には、Management APIの使用が強力な代替手段となります。このガイドは、異なるシナリオでLogto Management APIを使用する手順を紹介します。

概要

Logto Consoleには組み込みのAPIリソース「Logto Management API」があることに気付くかもしれません。このガイドでは、これが重要な役割を果たします。

他のAPIリソースと比較して、現在Logto Management APIはエンドユーザーからの直接アクセスを許可していません。これはマシン間の通信のために設計されているからであり、Logtoアカウントおよびリソースを管理するために使用できるほど強力です。

Logto Management APIを使用したい典型的なシナリオをいくつか紹介します:

CI/CD

サービス間通信

シングルページアプリ

HTMLをレンダリングするWebサーバー

アーキテクチャ

シナリオに関係なく、Logto Management APIにアクセスするための2つのパターンがあります。

パターン1: 直接アクセス

このパターンでは、クライアントまたはサービスが直接Logto Management APIにアクセスします。Logtoでは、クライアントまたはサービスは「マシン間アプリ」と呼ばれます。

バックエンドサービスの使用例:

パターン2: 間接アクセス

このパターンでは、クライアントまたはサービスがバックエンドサービスを介してLogto Management APIにアクセスします。パターン2はパターン1の上に構築されており、もう一つのアプリが関与します。この新しいアプリは、バックエンドサービスにアクセスする従来のWeb、ネイティブ、またはシングルページアプリであり得ます。

シングルページアプリの使用例:

このパターンは、Logto Management APIへのアクセスを制御するカスタムロジックを持ちたい場合に有用です。例えば、消費者向けに全ての注文を返し、それぞれの注文に販売者情報を付加したい場合、シングルページアプリを使用してバックエンドサービスに注文を取得するよう要求し、バックエンドサービスではLogto Management APIを使用して販売者情報を取得できます。

Logto Management APIにアクセスする

マシン間アプリを作成

まず、Logto Consoleでマシン間アプリを作成する必要があります。「アプリケーション」タブに移動して「アプリケーションを作成」ボタンをクリックします。それから「マシン間カード」で「構築を開始」をクリックします。

マシン間ロールの設定

Logto Management APIにアクセスするためには、適切な権限を持つマシン間ロールを作成する必要があります。Logto Consoleで「ロール」タブに移動し「ロールを作成」ボタンをクリックします。「詳細オプションを表示」をクリックし、「ロールタイプ」セクションで「マシン間アプリロール」を選択します。

これで「パーミッションを割り当てる」セクションに「Logto Management API」が表示されます。全ての権限に対してAPIリソースをチェックし、「ロールを作成」ボタンをクリックします。

ロールが作成されたら、前のステップで作成したマシン間アプリに割り当てることができます。

アクセストークンを取得

この記事のステップに従って、マシン間アプリ用にクライアント資格情報のグラントを介してアクセストークンを取得できます。Logto Management APIのエンドポイントへリクエストを送信してアクセストークンをテストしてください。

これでパターン1の準備が整いました。アクセストークンは短時間しか有効ではないため、それをキャッシュしたい場合は定期的に更新することをお勧めします。

もう一つのレイヤーを追加

エンドユーザーによるLogto Management APIへのアクセスは許可されていませんが、Logto Management APIの力を利用するためのレイヤーを追加しサービスを強化することができます。

例えば、シングルページアプリとバックエンドサービスを使ってオンラインコミュニティを構築しているとします。最も多くのフォロワーを持つトップ10のユーザーをサインインしたユーザーが見ることができる機能を持ちたいかもしれません。エンドポイントGET /api/top-usersが作成されます:

エンドポイントがサインインしたユーザーのみアクセス可能であることを確保するため、Logto Consoleで「シングルページアプリ」を作成し、そのアプリにLogto SDKを統合します。それからSDKを使用してアクセストークンを取得し、エンドポイントにリクエストを送信できます:

バックエンドサービスでは、まずデータベースからトップ10のユーザーをクエリし、Logto Management APIを使用してユーザーの情報を取得します:

最後に、シングルページアプリにレスポンスを返すことができます:

完全なシーケンス図:

このフローには2種類のアクセストークンが含まれます。:1つはLogto Management APIにアクセスするためにバックエンドサービス用、もう一つはバックエンドサービスにアクセスするためにシングルページアプリ用です。

前項で取得したのが前者のアクセストークンです。後者のアクセストークンはLogto SDKから取得できます。

シングルページアプリのアクセストークンはJSON Web トークン(JWT)ではありません

Logto SDKでgetAccessTokenメソッドを呼び出す際にリソースを指定しない場合、アクセストークンはuserinfoエンドポイントで使用するため意図された不透明な文字列になります。JWTを取得するには:

  1. Logto ConsoleでAPIリソースを定義します。例: https://api.example.com
  2. APIリソースをLogto SDKのresources設定に追加します。例:resources: ['https://api.example.com']
  3. APIリソースを指定してgetAccessTokenメソッドを呼び出します。例:getAccessToken('https://api.example.com')

JWTをバックエンドサービスで検証するには、APIリクエストの承認トークンを検証するを参照してください。

シングルページアプリのJWTは何を意味しますか?

JWTはユーザーがサインインし、APIリソースにアクセスしようとしたことを示すだけです。ユーザーがAPIリソースの特定の権限を持っていることを意味するものではありません。ユーザーにAPIリソースへのアクセスを許可するかどうかを決定するのはあなた次第です。

より詳細なアクセス制御が必要なら、ユーザーに役割ベースのアクセス制御(RBAC)を適用することもできます。🔐役割ベースのアクセス制御(RBAC)をご覧ください。

終わりに

Logto Management APIは複数のシナリオで強力かつ柔軟です。標準プロトコルのおかげで、簡単にLogto Management APIをアプリケーションに統合し、安全で拡張可能なシステムを構築できます。質問があればいつでもお気軽にご連絡ください。