認証
アーカイブされたソース スナップショット。製品ラベルはRepovioを使用します。このリリースのタグ付きデプロイメント ファイルの構成識別子とコンテナー参照を変更せずに使用します。
初回実行のセットアップ
新しいインストールを展開した後、そのパブリック URL を開きます。 Repovio すべてのリクエストをにリダイレクトします
/auth/setup
最初のアカウントが存在するまで。オプションの姓名、一意のユーザー名、および 12 文字以上のパスワードを入力します。アカウントはシステム管理者として作成され、すぐにサインインされます。
セットアップは 1 回のみ成功します。最初のユーザーが存在した後、 /auth/setup にリダイレクトします
/auth/signin。既存のインストールでは、アップグレード中も現在のユーザーが保持され、セットアップは再度表示されません。
OpenID Connect シングル サインオン
Repovio は、ローカル サインインに加えて、オプションの OpenID Connect プロバイダーを 1 つサポートします。システム管理者は、設定 → 認証 でこれを設定します。このログインは別のものです GitHub、 GitLab、 Forgejo、 そして Gitea プロバイダー OAuth: OIDC を特定します Repovio ユーザー、プロバイダー OAuth プロバイダー リソースへの読み取りアクセスのみを許可します。
プロバイダーを構成する前に、外部から到達可能な API コールバック URL を正確に設定します。
PUBLIC_URL=https://repovio.example.com
OIDC_CALLBACK_URL=https://repovio.example.com/api/v1/auth/oidc/callback
の値を登録します OIDC_CALLBACK_URL
アイデンティティプロバイダーで許可されたリダイレクト URI として。発行者、クライアント ID、オプションのクライアント シークレット、スコープ、およびグループ クレームを構成します。 Repovio。 API は保存時にクライアント シークレットを受け入れますが、その値は返しません。保存時には暗号化されます
TOKEN_ENCRYPTION_KEY。
接続の確認を使用する前に構成を保存してください。変更が保存されていない場合は、そのチェックが無効になります。依存する前に検出が成功したことを確認してください OIDC サインイン。
発行者とそのエンドポイントには HTTPS が必要です。 HTTP 発行者を許可 は、隔離されたラボ ネットワークのみを対象としています。インターネットにアクセス可能な展開では決して有効にしてはいけません。ローカル パスワード サインインは、次の場合でも回復パスとして利用可能です。 OIDC 有効になっています。
このフォームには、コピー用のコールバック URL、設定/監視されたグループ、および保存されているクライアント シークレットを置換またはクリアするための個別のコントロールも表示されます。置換を無効のままにしておくと、保存されたシークレットが保持されます。ロード、保存、接続チェックの失敗は個別に報告されます。無効な構成を修正し、接続チェックを再試行する前に再度保存してください。
グループ、役割、およびアイデンティティ
グループ クレームには、正確な 1 つのクレーム名、または realm_access.groups
などのドット区切りのパスを指定できます。 3 つの Repovio ロールに対して、大文字と小文字を区別した正確なグループ値を構成します。複数のグループが一致する場合、Repovio は
SYSTEM_ADMIN、次に MANAGER、次に VIEWER を適用します。 一致しないユーザーを閲覧者として許可する
が明示的に有効になっていない限り、一致しない、形式が間違っている、欠落している、または大きすぎるグループの申し立ては拒否されます。
OIDC アカウントは、検証された発行者とサブジェクトのペアによってのみリンクされます。 Repovio は、電子メール アドレスやユーザー名によって OIDC ログインをローカル アカウントにリンクすることはありません。ログインが成功するたびに、検証済みのクレームから姓名が同期されます。ログイン名、プロファイル名、パスワードはローカルで変更できません。リポジトリ メンバーシップは Repovio で管理されたままとなり、アイデンティティ プロバイダー グループから派生することはありません。
セキュリティに関する設定やロールを変更すると、既存の OIDC bearer token は無効になります。プロバイダーの表示名だけを変更しても、既存の OIDC token は無効になりません。ID プロバイダーのグループを無効化または削除すると、対象アカウントは新しいセッションを取得できなくなり、次にログインが拒否された後で以前のセッションも無効になります。
プロバイダーの例
Authentik の場合、認可コード フロー、上記の正確なコールバック URL、および openid、profile、および email
スコープを使用して OAuth2/OpenID プロバイダーを作成します。選択したグループ クレームをグループ名の配列として返すスコープ マッピングを追加し、プロバイダーをアプリケーションにアタッチして、アプリケーションの発行者、クライアント ID、およびクライアント シークレットを Repovio にコピーします。
別の標準準拠プロバイダーの場合は、認証コード フローを有効にし、S256
PKCE を要求し、正確なコールバック URL を登録し、安定した sub
と構成されたグループ クレームを ID トークンまたは UserInfo 応答に含めます。 Repovio は、非対称 ID トークン署名のみを受け入れ、未署名トークンと HMAC 署名付きトークンを拒否します。
OIDC API コントラクト
| 方法 | パス | アクセス | 目的 |
|---|---|---|---|
GET | /api/v1/auth/oidc/status | パブリック | 有効な可用性とオプションのプロバイダー名のみを返します。 |
GET | /api/v1/auth/oidc/start | パブリック | ブラウザバインドされた認証コードと S256 PKCE トランザクションを開始します。 |
GET | /api/v1/auth/oidc/callback | パブリック | プロバイダーの応答を検証し、ワンタイム フラグメント コードでリダイレクトします。 |
POST | /api/v1/auth/oidc/exchange | パブリック | フラグメント コードを 1 回消費し、通常のベアラー AuthResult を返します。 |
GET、PUT | /api/v1/auth/oidc/config | システム管理者 | シークレットセーフな OIDC 設定を読み取りまたは更新します。 |
POST | /api/v1/auth/oidc/check | システム管理者 | 保存された検出設定を変更せずに確認します。 |
コールバックは URL にベアラー JWT を配置しません。その不透明な交換コードは 60 秒後に期限切れになり、使用できるのは 1 回だけです。プロバイダーのエラーは、ブラウザーやログに到達する前に安定したエラー コードに変換されます。
パスワードを変更してください
サインインしているときに、設定 → 一般 → パスワードの変更 を開きます。現在のパスワード、新しいパスワード、およびその確認を入力します。 Repovio は、現在のブラウザーを置換アクセス トークンでサインインしたままにし、他のすべてのサインイン セッションで保持されているトークンを無効にします。
忘れたパスワードをリセットする
Repovio には、意図的に電子メールベースのパスワード リセットがありません。デプロイメント管理者は、compose.yml
を含むディレクトリからローカル アカウントをリセットできます。置換パスワードをエコーしたりシェル履歴に保存したりせずに読み取り、標準入力経由で API コンテナに送信します。
read -rsp 'New Repovio password: ' REPOVIO_NEW_PASSWORD
printf '\n'
printf '%s\n' "$REPOVIO_NEW_PASSWORD" \
| docker compose exec -T api node dist/scripts/reset-password.js USERNAME
unset REPOVIO_NEW_PASSWORD
USERNAME
を正確なログイン ユーザー名に置き換えます。このコマンドには 12 ~ 256 文字のパスワードが必要で、そのローカル アカウントのみが更新され、既存のアクセス トークンはすべて無効になります。その後、新しいパスワードを使用して再度サインインします。このコマンドは、ローカル パスワードがないため、OIDC で管理されているアカウントを拒否します。