別のアカウントでサインインする
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 です。アドレスをもらうスコープを外すと、インスタンスは起動しません。それがないとサインインがすべて失敗するからです。
誰がアカウントを持てるか
初めてのサインインでアカウントを作るかどうかは、プロバイダーごとに決めます。
| 継承(デフォルト) | auth.registration に従う。招待も含めて、パスワードでの登録と同じ |
| 常に作る | プロバイダーが通した人は誰でもアカウントを持てる。auth.registration に関係なく、招待も不要 |
| 作らない | 既存のアカウントと、自分でこのプロバイダーを連携したアカウントだけがこの方法でサインインできる |
GitHub や Discord で「常に作る」にすると誰でも入れる
どちらにも絞り込むためのグループがないので、世界中の GitHub や Discord のアカウントがここでアカウントを作れます。
OpenID Connect では、必須グループで絞り込めます。設定すると、groups クレーム(または指定したクレーム)にそのグループを含む人だけが入れます。空にすると、プロバイダーが通した人は全員入れます。
よくある形は三つです。
| 登録 | アドレスで照合 | 必須グループ | |
|---|---|---|---|
| ひとり、自分の NAS | closed | オフ | 空 |
| 友人数人 | invite | オン | 空 |
| シングルサインオンの後ろの小さなチーム | open | オン | 設定する |
最後の行にはもっと厳しい形もあります。登録を閉じて、プロバイダーを「常に作る」にします。すると登録フォームそのものがなくなり、入れる人は ID プロバイダーだけが決めます。
既存のアカウントとつなぐ
パスワードでアカウントを持っている人は、アカウント設定からプロバイダーを連携でき、解除もできます。
メールアドレスで照合すると、初回サインイン時に同じことを自動で行います。デフォルトはオフで、OpenID Connect では三段階あります。
- しない: アドレスでは何もつなぎません。
- 確認済みなら: プロバイダーがアドレスを確認済みと伝えている必要があります。
- 常に: プロバイダーが何と言っても照合します。
「常に」は他人にアカウントを乗っ取られる入口になる
誰でも好きなアドレスで登録できるプロバイダーだと、それがここのアカウントへの入口になります。自分で運用していて、アドレスもそのプロバイダー自身が発行している場合にだけ使ってください。アドレスが確認済みかどうかを決して伝えないプロバイダー(Synology SSO、職場アカウントの Entra ID)があり、この段階があるのはそのためだけです。
GitHub と Discord は確認していないアドレスを渡さないので、単純なオンとオフです。
名前
新しいアカウントの名前は、プロバイダーが渡すものから、使える最初のものを取ります。優先ユーザー名、アドレスの @ より前の部分、表示名の順です。ルールに合わなければ断らずに整え、すでに使われている名前なら数字を足します。alice は alice2 になります。
締め出されたとき
アカウントは、唯一のサインイン方法を外せません。パスワードもパスキーもなく、プロバイダーが一つだけなら、そのプロバイダーは外せないままです。
プロバイダー自体がなくなったら、マシン上で tessera-server reset-password を実行すると、パスワードを一度も持っていなかったアカウントにもパスワードを設定できます。アカウントを見てください。
OpenID Connect のプロバイダーが誰かをサインアウトさせ、バックチャネルログアウトに対応していれば、ここでのセッションも終わります。