tessera

別のアカウントでサインインする

OpenID Connect、GitHub、Discord。デフォルトはオフ

パスワードの代わりに、またはパスワードと併用して、ID プロバイダー経由でサインインできます。対応しているのは三種類です。

  • OpenID Connect。 自分や組織が運用しているプロバイダー向けです。Authentik、Keycloak、Authelia、Synology SSO、Entra ID などです。
  • GitHub。 GitHub Enterprise Server も含みます。
  • Discord。

三つとも設定するまではオフで、どれも管理画面で設定します。クライアントシークレットはほかの認証情報と同じく封印され、二度と表示されません。

設定する

server.public_url を設定する

プロバイダーが利用者を戻す先のアドレスはこれから組み立てます。これがないとサインインは始まりません。https://files.example.com のように、利用者がブラウザに入力するアドレスを使ってください。

プロバイダーにこのインスタンスを登録する

次のコールバックアドレスを渡します。パスの最後は oidc、github、discord のどれかです。

https://files.example.com/api/v1/auth/oidc/callback

プロバイダーは一文字ずつ比較するので、server.public_url と完全に一致している必要があります。

管理画面に入力する

OpenID Connect なら、発行者(issuer)、クライアント ID、シークレットです。管理画面はプロバイダーのディスカバリードキュメントを読んで、埋められるところは埋めてくれます。GitHub と Discord なら、クライアント ID とシークレットです。

スコープのデフォルトは、それぞれに必要なものです。OpenID Connect は openid email profile、GitHub は read:user user:email、Discord は identify email です。アドレスをもらうスコープを外すと、インスタンスは起動しません。それがないとサインインがすべて失敗するからです。

プロバイダーを選ぶ プロバイダーへリダイレクト サインインして承認 コールバック URL に戻す ポリシーに従い照合または作成 サインイン完了 訪問者 tessera プロバイダー

誰がアカウントを持てるか

初めてのサインインでアカウントを作るかどうかは、プロバイダーごとに決めます。

継承(デフォルト)auth.registration に従う。招待も含めて、パスワードでの登録と同じ
常に作るプロバイダーが通した人は誰でもアカウントを持てる。auth.registration に関係なく、招待も不要
作らない既存のアカウントと、自分でこのプロバイダーを連携したアカウントだけがこの方法でサインインできる

GitHub や Discord で「常に作る」にすると誰でも入れる

どちらにも絞り込むためのグループがないので、世界中の GitHub や Discord のアカウントがここでアカウントを作れます。

OpenID Connect では、必須グループで絞り込めます。設定すると、groups クレーム(または指定したクレーム)にそのグループを含む人だけが入れます。空にすると、プロバイダーが通した人は全員入れます。

よくある形は三つです。

登録アドレスで照合必須グループ
ひとり、自分の NASclosedオフ空
友人数人inviteオン空
シングルサインオンの後ろの小さなチームopenオン設定する

最後の行にはもっと厳しい形もあります。登録を閉じて、プロバイダーを「常に作る」にします。すると登録フォームそのものがなくなり、入れる人は ID プロバイダーだけが決めます。

既存のアカウントとつなぐ

パスワードでアカウントを持っている人は、アカウント設定からプロバイダーを連携でき、解除もできます。

メールアドレスで照合すると、初回サインイン時に同じことを自動で行います。デフォルトはオフで、OpenID Connect では三段階あります。

  • しない: アドレスでは何もつなぎません。
  • 確認済みなら: プロバイダーがアドレスを確認済みと伝えている必要があります。
  • 常に: プロバイダーが何と言っても照合します。

「常に」は他人にアカウントを乗っ取られる入口になる

誰でも好きなアドレスで登録できるプロバイダーだと、それがここのアカウントへの入口になります。自分で運用していて、アドレスもそのプロバイダー自身が発行している場合にだけ使ってください。アドレスが確認済みかどうかを決して伝えないプロバイダー(Synology SSO、職場アカウントの Entra ID)があり、この段階があるのはそのためだけです。

GitHub と Discord は確認していないアドレスを渡さないので、単純なオンとオフです。

名前

新しいアカウントの名前は、プロバイダーが渡すものから、使える最初のものを取ります。優先ユーザー名、アドレスの @ より前の部分、表示名の順です。ルールに合わなければ断らずに整え、すでに使われている名前なら数字を足します。alice は alice2 になります。

締め出されたとき

アカウントは、唯一のサインイン方法を外せません。パスワードもパスキーもなく、プロバイダーが一つだけなら、そのプロバイダーは外せないままです。

プロバイダー自体がなくなったら、マシン上で tessera-server reset-password を実行すると、パスワードを一度も持っていなかったアカウントにもパスワードを設定できます。アカウントを見てください。

OpenID Connect のプロバイダーが誰かをサインアウトさせ、バックチャネルログアウトに対応していれば、ここでのセッションも終わります。

次に読む

このページの内容