Management API によるアカウント設定
統合
Logto は、ユーザーアカウントを管理するためのさまざまな Management API を提供しています。これらの API を使用して、エンドユーザー向けのセルフサービスアカウント設定ページを構築できます。
アーキテクチャ
- ユーザー: アカウント設定にアクセスし管理する必要がある認証済みエンドユーザー。
- クライアントアプリケーション: ユーザーにアカウント設定ページを提供するクライアントアプリケーション。
- サーバーサイドアプリケーション: クライアントにアカウント設定 API を提供するサーバーサイドアプリケーション。Logto Management API と連携します。
- Logto: 認証 (Authentication) と認可 (Authorization) サービスとしての Logto。ユーザーアカウントを管理するための Management API を提供します。
シーケンス図
- ユーザーがクライアントアプリケーションにアクセスします。
- クライアントアプリケーションが Logto に認証リクエストを送り、ユーザーを Logto のサインインページにリダイレクトします。
- ユーザーが Logto にサインインします。
- 認証されたユーザーがクライアントアプリケーションに認可コードと共にリダイレクトされます。
- クライアントアプリケーションが Logto からセルフホスト型アカウント設定 API アクセスのためのアクセス トークンを要求します。
- Logto がクライアントアプリケーションにアクセス トークンを付与します。
- クライアントアプリケーションがユーザーアクセス トークンを使用してサーバーサイドアプリケーションにアカウント設定リクエストを送信します。
- サーバーサイドアプリケーションがユーザーアクセス トークンからリクエスト者のアイデンティティと権限を確認し、Logto から Management API アクセス トークンを要求します。
- Logto がサーバーサイドアプリケーションに Management API アクセス トークンを付与します。
- サーバーサイドアプリケーションが Management API アクセス トークンを使用して Logto からユーザーデータを要求します。
- Logto がサーバーのアイデンティティと Management API 権限を確認し、ユーザーデータを返します。
- サーバーサイドアプリケーションがリクエスト者の権限に基づいてユーザーデータを処理し、クライアントアプリケーションにユーザーアカウントの詳細を返します。
Management API をサーバーサイドアプリケーションに統合する
サーバーサイドアプリケーションと Management API を統合する方法については、Management API セクションを確認してください。
ユーザー管理 API
ユーザーデータスキーマ
Logto のユーザースキーマについて詳しく知るには、ユーザーデータとカスタムデータ セクションを確認してください。
ユーザープロファイルと識別子管理 API
ユーザープロファイルと識別子は、ユーザー管理において重要です。以下の API を使用して、ユーザープロファイルと識別子を管理できます。
| method | path | description |
|---|---|---|
| GET | /api/users/{userId} | ユーザー ID でユーザー詳細を取得します。 |
| PATCH | /api/users/{userId} | ユーザー詳細を更新します。 |
| PATCH | /api/users/{userId}/profile | ユーザー ID でユーザープロファイルフィールドを更新します。 |
| GET | /api/users/{userId}/custom-data | ユーザー ID でユーザーのカスタムデータを取得します。 |
| PATCH | /api/users/{userId}/custom-data | ユーザー ID でユーザーのカスタムデータを更新します。 |
| PATCH | /api/users/{userId}/is-suspended | ユーザー ID でユーザーの停止状態を更新します。 |
メールと電話番号の確認
Logto システムでは、メールアドレスと電話番号の両方がユーザー識別子として機能するため、その確認が重要です。これをサポートするために、提供されたメールまたは電話番号を確認するための一連の確認コード API を提供しています。
新しいメールまたは電話番号でユーザープロファイルを更新する前に、メールまたは電話番号を確認してください。
| method | path | description |
|---|---|---|
| POST | /api/verifications/verification-code | メールまたは電話番号の確認コードを送信します。 |
| POST | /api/verifications/verification-code/verify | 確認コードでメールまたは電話番号を確認します。 |
ユーザーパスワード管理
| method | path | description |
|---|---|---|
| POST | /api/users/{userId}/password/verify | ユーザー ID で現在のユーザーパスワードを確認します。 |
| PATCH | /api/users/{userId}/password | ユーザー ID でユーザーパスワードを更新します。 |
| GET | /api/users/{userId}/has-password | ユーザー ID でユーザーがパスワードを持っているか確認します。 |
ユーザーのパスワードを更新する前に、現在のパスワードを確認してください。
ユーザーソーシャルアイデンティティ管理
| method | path | description |
|---|---|---|
| GET | /api/users/{userId} | ユーザー ID でユーザー詳細を取得します。ソーシャルアイデンティティは identities フィールドにあります。 |
| POST | /api/users/{userId}/identities | 認証済みのソーシャルアイデンティティをユーザー ID でリンクします。 |
| DELETE | /api/users/{userId}/identities | ソーシャルアイデンティティをユーザー ID からリンク解除します。 |
| PUT | /api/users/{userId}/identities | ユーザー ID にリンクされたソーシャルアイデンティティを直接更新します。 |
| POST | /api/connectors/{connectorId}/authorization-uri | ソーシャルアイデンティティプロバイダーの認可 URI を取得します。この URI を使用して新しいソーシャルアイデンティティ接続を開始します。 |
- ユーザーがクライアントアプリケーションにアクセスし、ソーシャルアイデンティティをバインドするリクエストを行います。
- クライアントアプリケーションがサーバーにソーシャルアイデンティティをバインドするリクエストを送信します。
- サーバーが Logto にソーシャルアイデンティティプロバイダーの認可 URI を取得するリクエストを送信します。リクエストには独自の
stateパラメータとredirect_uriを提供する必要があります。ソーシャルアイデンティティプロバイダーにredirect_uriを登録してください。 - Logto がサーバーに認可 URI を返します。
- サーバーがクライアントアプリケーションに認可 URI を返します。
- クライアントアプリケーションがユーザーを IdP 認可 URI にリダイレクトします。
- ユーザーが IdP にサインインします。
- IdP が
redirect_uriを使用してユーザーをクライアントアプリケーションに認可コードと共にリダイレクトします。 - クライアントアプリケーションが
stateを検証し、IdP 認可レスポンスをサーバーに転送します。 - サーバーが Logto にソーシャルアイデンティティをユーザーにリンクするリクエストを送信します。
- Logto が認可コードを使用して IdP からユーザー情報を取得します。
- IdP がユーザー情報を Logto に返し、Logto がソーシャルアイデンティティをユーザーにリンクします。
ユーザーに新しいソーシャルアイデンティティをリンクする際に考慮すべき制限があります:
- Management API にはセッションコンテキストがないため、ソーシャル認証状態を安全に維持するためにアクティブなセッションを必要とするソーシャルコネクターは Management API を介してリンクできません。サポートされていないコネクターには、apple、標準 OIDC、および標準 OAuth 2.0 コネクターが含まれます。
- 同じ理由で、Logto は認可レスポンスの
stateパラメータを検証できません。クライアントアプリにstateパラメータを保存し、認可レスポンスを受信したときにそれを検証してください。 - ソーシャルアイデンティティプロバイダーに
redirect_uriを事前に登録する必要があります。そうしないと、ソーシャル IdP はユーザーをクライアントアプリにリダイレクトしません。ソーシャル IdP は、ユーザーサインイン用と独自のプロファイルバインディングページ用の複数のコールバックredirect_uriを受け入れる必要があります。
ユーザーエンタープライズアイデンティティ管理
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}?includeSsoIdentities=true | ユーザー ID でユーザー詳細を取得します。エンタープライズアイデンティティは ssoIdentities フィールドにあります。ユーザー詳細 API に includeSsoIdentities=true クエリパラメータを追加してそれらを含めます。 |
現在、Management API はユーザーにエンタープライズアイデンティティをリンクまたはリンク解除することをサポートしていません。ユーザーにリンクされたエンタープライズアイデンティティを表示することのみが可能です。
パーソナルアクセストークン
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}/personal-access-tokens | ユーザーのすべてのパーソナルアクセストークンを取得します。 |
| POST | /api/users/{userId}/personal-access-tokens | ユーザーの新しいパーソナルアクセストークンを追加します。 |
| DELETE | /api/users/{userId}/personal-access-tokens/{name} | 名前でユーザーのトークンを削除します。 |
| PATCH | /api/users/{userId\s}/personal-access-tokens/{name} | 名前でユーザーのトークンを更新します。 |
パーソナルアクセストークンは、ユーザーが資格情報やインタラクティブなサインインを使用せずに アクセス トークン を付与するための安全な方法を提供します。パーソナルアクセストークンの使用について詳しくは、パーソナルアクセストークンの使用 を参照してください。
ユーザー MFA 設定管理
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}/mfa-verifications | ユーザー ID でユーザーの MFA 設定を取得します。 |
| POST | /api/users/{userId}/mfa-verifications | ユーザー ID でユーザーの MFA 確認を設定します。 |
| DELETE | /api/users/{userId}/mfa-verifications/{verificationId} | ID でユーザーの MFA 確認を削除します。 |
ユーザーアカウント削除
| method | path | description |
|---|---|---|
| DELETE | /api/users/{userId} | ユーザー ID でユーザーを削除します。 |
ユーザーセッション管理
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}/sessions | ユーザー ID でユーザーセッションを取得します。 |
| GET | /api/users/{userId}/sessions/{sessionId} | セッション ID でユーザーセッションを取得します。 |
| DELETE | /api/users/{userId}/sessions/{sessionId} | セッション ID でユーザーセッションを削除します。 |
ユーザー認可アプリ (グラント) の管理
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}/grants | ユーザーのアクティブなアプリグラントを一覧表示します。 |
| DELETE | /api/users/{userId}/grants/{grantId} | ID で特定のアプリグラントを取り消します。 |
グラント一覧表示のためのオプションのクエリパラメータ:
appType=firstParty: ファーストパーティアプリグラントのみを返します。appType=thirdParty: サードパーティアプリグラントのみを返します。appTypeを省略: すべてのアクティブなグラントを返します。
グラントが取り消されると、そのグラントに対して以前に発行された不透明トークンとリフレッシュ トークンは無効になります。