ユーザーと権限(Users & Permissions)
Page summary:
Users & Permissions はエンドユーザーアカウント、JWT 認証、API へのロールベースのアクセスを扱います。このページではロールの作成、権限の設定、安全なアクセス用の API トークンについて説明します。
Users & Permissions は、Strapi プロジェクトのエンドユーザーを管理します。エンドユーザーとは、 JSON Web Token(JWT)に基づく認証で API を保護し、グループごとに権限を扱う ACL(アクセス制御リスト)を提供します。
管理パネルでの設定
Users & Permissions は、管理パネルの設定とコードの両方から設定します。
ロール
エンドユーザー向けのロールを作成・管理し、どの操作にアクセスできるかを設定できます。
新しいロールを作成する
場所: Users & Permissions プラグイン > Roles
Roles 画面の右上に Add new role があります。Strapi アプリのエンドユーザー向けに新しいロールを作れます。
Add new role をクリックするとロール編集画面へ移動し、名前・詳細・権限を設定します(ロールを編集する も参照)。

新規エンドユーザーに既定で付与するロールは、Users & Permissions プラグイン の Advanced settings で指定します(高度な設定 を参照)。
ロールを編集する
場所: Users & Permissions プラグイン > Roles
Roles 画面には、エンドユーザー向けに作成したロールが一覧表示されます。
既定では、どの Strapi アプリにも次の 2 つのロールがあります。
- Authenticated — フロントアプリにログインしたエンドユーザーのみコンテンツにアクセスできるようにする。
- Public — ログインしていないエンドユーザーでもコンテンツにアクセスできるようにする。
ほかにもロールを追加できます(新しいロールを作成する)。いずれもロール編集画面から編集できます。
- 編集するロールの をクリックします(新規作成の流れで既に編集画面にいる場合は不要)。
- 次の表に従って Role details を入力します。
| Role details | 手順 |
|---|---|
| Name | テキストボックスにロール名を入力します。 |
| Description | テキストボックスに説明を入力します。管理者がロールの権限の範囲を把握できる内容にします。 |
- エンドユーザーロールの Permissions を設定します。
- 設定する権限カテゴリ名をクリックします(例: Application、Content-Manager、Email など)。
- ロールに付与するアクションと権限のチェックボックスをオンにします。
- Save をクリックします。
アクションや権限のチェックを入れると、関連する API のルートが画面右側に表示されます。

ロールを削除する
場所: Users & Permissions プラグイン > Roles
既定の 2 ロールは削除できません。それ以外は、まだそのロールがアカウントに付いているエンドユーザーがいなければ削除できます。
- 対象ロールの右側の削除 をクリックします。
- 確認ダイアログで Confirm をクリックして削除します。
プロバイダー
場所: Users & Permissions プラグイン > Providers
サードパーティのプロバイダーでログイ ンし、Strapi の API 経由でフロントのコンテンツにアクセスできるよう、プロバイダーを有効化して設定します。
既定では複数のプロバイダーが一覧にあり、そのうち Email は Users & Permissions が有効なすべての Strapi アプリで既定で有効です。
- 有効化・設定するプロバイダーの編集 をクリックします。
- プロバイダー編集画面で Enable の TRUE をクリックします。
- 各プロバイダー固有の設定項目を入力します(Users & Permissions のプロバイダー を参照)。
- Save をクリックします。

Strapi が既定で用意していないプロバイダーは、アプリのコードから手動で追加できます。次のカードから、設定や独自プロバイダー作成の詳細へ進めます。
プロバイダーの設定
Users & Permissions のプロバイダーの動き、ログインの流れ、よくある設定例を扱います。
カスタムプロバイダーの作成
Users & Permissions 用に独自のプロバイダーを作る方法を説明します。
メールテンプレート
場所: Users & Permissions プラグイン > Email templates
Users & Permissions は、エンドユーザーへ送るメールに次の 2 種類のテンプレートを使います。「Email address confirmation」と「Reset password」です。
- アカウントを有効化する前に確認が必要な場合
- Strapi アカウントのパスワードをリセットする場合
どちらのテンプレートも変更できます。
- 編集するメールテンプレートの をクリックします。
- メールテンプレートを設定します。
設定名 手順 Shipper name 送信者名を入力します。 Shipper email 送信者のメールアドレスを入力します。 Response email (任意)エンドユーザーからの返信を受け取るメールアドレスを入力 します。 Subject 件名を入力します。変数が使えます(メールのテンプレート変数 を参照)。 - 「Message」テキストボックスで本文を編集します。HTML と変数を使います(メールのテンプレート変数 を参照)。
- Finish をクリックします。

高度な設定
場所: Users & Permissions プラグイン > Advanced settings
Users & Permissions に関する設定の多くは Advanced Settings で管理します。エンドユーザーの既定ロール、サインアップやメール確認の有効化、パスワードリセット後の遷移先 URL などが含まれます。
-
次の表に従って必要な項目を設定します。
設定名 手順 Default role for authenticated users ドロップダウンで、新規エンドユーザーの既定ロールを選びます。 One account per email address TRUE で、同一メールアドレスのエンドユーザーアカウントを 1 件に制限します。
FALSE で制限を外し、同一メールで複数アカウントを許可します(例: 異なるプロバイダーでkai.doe@strapi.ioにログインする場合)。Enable sign-ups TRUE でエンドユーザーのサインアップを許可します。
FALSE でフロントアプリへのユーザー登録を防ぎます。Reset password page フロントアプリのパスワードリセットページの URL を入力します。 Enable email confirmation TRUE で確認メールによるアカウント確認を有効にします。
FALSE で確認を無効にします。Redirection url Strapi アカウント確認後にエンドユーザーをリダイレクトするページの URL を入力します。 -
Save をクリックします。

コードベースの設定
Users & Permissions の多くは管理パネルで設定しますが、コードで細かく調整できる項目もあります。
JWT の設定
JSON Web Token(JWT)の生成は プラグイン設定ファイル で設定します。
Strapi は JWT の生成に jsonwebtoken を使います。
JWT の管理モード
Users & Permissions では JWT を 2 つのモードで管理できます。
どちらを使うかは、/config/plugins の users-permissions.config の jwtManagement で指定します。legacy-support または refresh のいずれかです。
| モード | 説明 | 用途 |
|---|---|---|
legacy-support | (既定)従来の設定で長寿命の JWT を発行する | 既存アプリ、シンプルな認証 |
refresh | 短命のアクセストークンとリフレッシュトークンでセッション管理し、安全性を高める | 新規アプリ、強めのセキュリティ要件 (詳細は 管理パネルの設定 を参照) |
後方互換のため、既定はレガシーモードです。
module.exports = ({ env }) => ({
'users-permissions': {
config: {
jwtManagement: 'legacy-support',
jwt: {
expiresIn: '7d', // Traditional JWT expiry
},
},
},
});
jwtSecretは新しい JWT を作るためのランダム文字列で、多くの場合JWT_SECRET環境変数 で設定します。jwt.expiresInは(レガシーモードのみ)秒数、または時間の長さを表す文字列で指定します。
例: 60、"45m"、"10h"、"2 days"、"7d"、"2y"。数値だけの場合は秒として解釈されます。文字列では単位(分・時間・日・年など)を必ず含めてください。単位がないとミリ秒として扱われます("120"は"120ms"と同じになります)。
セキュリティ上、JWT の有効期限を 30 日を超えて長くすることは推奨されません。
refresh モードの設定例は次のと おりです。
- JavaScript
- TypeScript
module.exports = ({ env }) => ({
// …
'users-permissions': {
config: {
jwtManagement: 'refresh',
sessions: {
accessTokenLifespan: 604800, // 1 week (default)
maxRefreshTokenLifespan: 2592000, // 30 days
idleRefreshTokenLifespan: 604800, // 7 days
httpOnly: false, // Set to true for HTTP-only cookies
cookie: {
name: 'strapi_up_refresh',
sameSite: 'lax',
path: '/',
secure: false, // true in production
},
},
},
},
// ...
});
export default ({ env }) => ({
// …
'users-permissions': {
config: {
jwtManagement: 'refresh',
sessions: {
accessTokenLifespan: 604800, // 1 week (default)
maxRefreshTokenLifespan: 2592000, // 30 days
idleRefreshTokenLifespan: 604800, // 7 days
httpOnly: false, // Set to true for HTTP-only cookies
cookie: {
name: 'strapi_up_refresh',
sameSite: 'lax',
path: '/',
secure: false, // true in production
},
},
},
},
// ...
});