# シングルサインオン

このページを最後まで進めると、家族が SkyView 専用のパスワードを覚える必要はなくなります——Synology NAS のアカウント、社内アカウント、Google アカウントで、ボタンを 1 回押すだけで入れます。

> **ℹ️ はじめる前に**
>
> 設定できるのは管理者だけです。入口：**システム設定 → シングルサインオン**（デスクトップではコントロールパネル → シングルサインオン）。もう 1 つ、「アカウントを預かる側」も必要です。Synology NAS に付属するアカウントサービス、社内のアカウント基盤、Google などがこれにあたり、以下ではまとめて IDプロバイダーと呼びます。設定が済むとログイン画面に「〇〇 でログイン」ボタンが増え、Web でもスマホアプリでも使えます。

> **💡 プロバイダー側で確認済みなら、SkyView は重ねて確認しません**
>
> IDプロバイダーが求める SMS・認証アプリ・社内ポリシーはそのまま働きます。そこを通過すれば SkyView はそのまま受け入れ、自前の確認コードを重ねて要求することはありません。そのため「会社として 2 段階認証を必須にしたい」といった要件は、つないだ時点で満たされます。

## 1. まずリダイレクト URI を控える

IDプロバイダー側でアプリを作成するとき、必ず「リダイレクト URI」（コールバック URL、Redirect URI、リダイレクト先などとも呼ばれます）の入力を求められます。SkyView の場合は次の形です。

```
https://<SkyView を開くときのアドレス>/api/auth/oidc/callback
```

SkyView の設定画面の上部には、いまアクセスしているアドレスをもとに組み立てた完全な 1 行がすでに表示されていて、コピーボタンも付いています。**そのままコピーするのがいちばん確実です**。

- **実際にアクセスしているアドレスを使ってください** —— コンテナ内部のアドレスでも `127.0.0.1` でもありません。
- **1 文字も違わないこと** —— `https` か `http` か、ポート番号、大文字と小文字。1 文字違うだけで通りません。
- **入口が 2 つあるなら 2 行登録します** —— 自宅では LAN のアドレス、外出先ではインターネット向けのドメインを使う場合、プロバイダー側に両方を登録してください（ほとんどのプロバイダーは複数行に対応しています）。

## 2. SkyView 側に入力する項目

| 入力する項目 | 説明 |
| --- | --- |
| シングルサインオンを有効にする | 全体のスイッチです。無効にするとログイン画面にボタンが出なくなりますが、関連付け済みのアカウントには影響しません |
| 表示名 | ボタンに表示される名前です。「自宅の NAS アカウント」「社内アカウント」など。空欄なら SSO と表示します |
| プロバイダーのアドレス | IDプロバイダーから提示されたアドレスをそのまま貼り付けてください。末尾に `/.well-known/openid-configuration` やスラッシュが付いていても問題ありません。https が必須です |
| クライアント ID | プロバイダー側でアプリを作成すると発行されます |
| クライアントシークレット | 同じくアプリ作成時に発行されます。SkyView とプロバイダーのサーバー間だけで使われ、ブラウザーやスマートフォンには渡りません |
| 初回ログイン時にアカウントを自動作成 | 有効：初めての人が最初にログインした時点で SkyView のアカウントを自動的に作ります。無効：事前の関連付けが必須になり、関連付けていない人は拒否されます |
| 自動作成時の権限 | 通常は「閲覧者（読み取り専用）」のままにします。管理権限が必要な人は、あとからユーザー管理で個別に引き上げてください |

「詳細設定」にはもう 2 項目あり、ほとんどのプロバイダーでは既定値のまま使えます。「要求するスコープ」は既定のままで構いません。「ユーザー名の取得元」は、プロバイダーのどの項目を SkyView のユーザー名にするかを決めます。取得できないときや使えない値だったときは、SkyView が自動生成します。

> **⚠️ 全体のスイッチを先に入れないでください**
>
> おすすめの順序は、プロバイダーのアドレス・クライアント ID・クライアントシークレットを入力 → 保存 →「シングルサインオンを有効にする」をオン → いったんログアウトして試す、です。どこかを入力し間違えていても、押せば必ず失敗するボタンをログイン画面に先に出さずに済みます。

> **ℹ️ 実機で最後まで確認したプロバイダー**
>
> Synology、Authentik、Keycloak の 3 つは、実機で最初から設定してログイン成功まで確認しています。Microsoft Entra と Google は各社の公式管理画面の手順どおりに設定するもので、入力の考え方は前の 3 つと同じです。

## 3. Synology SSO Server

NAS を使っている方にはこれがいちばん手軽です。別のものを用意する必要はなく、DSM のパッケージだけで IDプロバイダーになり、NAS にすでにあるアカウントをそのまま SkyView のログインに使えます。

1. **パッケージを入れてサービスを有効にする**

   **操作**：パッケージセンターで **SSO Server** をインストールし、開いたら「サービス」で **OIDC** にチェックを入れます（シングルサインオンの共通規格で、どの製品の画面でもこの名前で出てきます）。

2. **アプリケーションを追加する**

   **操作**：「アプリケーション → 追加」でタイプに **OIDC** を選び、名前は自由に付けます（「SkyView」など）。「リダイレクト URI」には 1 節目のアドレスを入力します。

3. **2 つの値を SkyView に書き写す**

   **操作**：保存すると一覧に**アプリケーション ID** と**アプリケーションシークレット**が表示されます。それぞれ SkyView の「クライアント ID」「クライアントシークレット」に対応します。

4. **プロバイダーのアドレスを入力する**

   **操作**：`https://<DSM にアクセスしているアドレス>/webman/sso` を入力します。例：`https://nas.example.com:5001/webman/sso`。

> **⚠️ この DSM のアドレスは https で、証明書が有効である必要があります**
>
> ブラウザーで DSM を開いたときに証明書の警告が出なければ大丈夫です。自己署名の証明書は SkyView が拒否します——DSM では無料の証明書をワンクリックで取得できるので、先にその手順を済ませてください。

Synology は「ユーザー名」という項目を単独では返さないため、SkyView は DSM のログイン名をそのまま SkyView のユーザー名として使います（DSM 上の名前がそのまま引き継がれます）。表示名にはメールアドレスが入ります。「ユーザー名の取得元」は既定のままで構いません。

## 4. Authentik

1. **Provider を新規作成する**

   **場所**：左メニューの **Applications → Providers → Create** で **OAuth2/OpenID Provider** を選びます。

2. **主要な項目を設定する**

   **操作**：認可フローは既存のものを選びます（確認画面ありでもなしでも構いません）。Client type は **Confidential**、Redirect URIs には 1 節目のアドレスを入力し（アドレスが複数あるなら複数行）、Signing Key は証明書を 1 つ選びます。

3. **資格情報を書き写す**

   **操作**：保存後、Provider の詳細画面で **Client ID** と **Client Secret** をコピーし、SkyView に入力します。

4. **Application を作成して使える範囲を決める**

   **操作**：**Applications → Create** でアプリケーションを作り、いま作った Provider に紐付けます。あわせて誰が使えるかも設定しておきます。

5. **プロバイダーのアドレスを入力する**

   **操作**：Provider の詳細画面にある **OpenID Configuration Issuer** がそれにあたります。`https://auth.example.com/application/o/yunkan/` のような形なので、そのまま SkyView の「プロバイダーのアドレス」に貼り付けます。末尾のスラッシュはあってもなくても構いません。

## 5. Microsoft Entra ID（旧 Azure AD）

1. **アプリを登録する**

   **場所**：Azure ポータル → **Microsoft Entra ID → アプリの登録 → 新規登録**。「リダイレクト URI」のプラットフォームは **Web** を選び、1 節目のアドレスを入力します。

2. **2 つの ID を控える**

   **操作**：登録が終わったら「概要」ページで**アプリケーション (クライアント) ID**（→ SkyView の「クライアント ID」）と**ディレクトリ (テナント) ID**（次の手順でアドレスを組み立てるのに使います）をコピーします。

3. **クライアント シークレットを作る**

   **操作**：「証明書とシークレット → 新しいクライアント シークレット」を開きます。作成したら**すぐに「値」の列をコピーしてください**——このページを離れると二度と表示されません。SkyView の「クライアントシークレット」に貼り付けます。

4. **プロバイダーのアドレスを入力する**

   **操作**：`https://login.microsoftonline.com/<テナント ID>/v2.0` を入力します。

Entra が返すユーザー名は通常メールアドレス全体です。SkyView は `@` より前の部分をユーザー名として使い、重複する場合は自動で連番を付けます。「API のアクセス許可」は既定の項目のままで構いません。

## 6. Google

> **⚠️ Google は LAN のアドレスを受け付けません**
>
> インターネット上で名前解決できるドメインと HTTPS しか認めず、LAN の IP アドレスや通常の http はすべて拒否されます。つまり Google でログインするには、SkyView に自分のドメインと証明書が先に必要です——〈[リモートアクセス](/docs/remote-access)〉を参照してください。証明書は管理画面から自動取得できます。

1. **認証情報を作成する**

   **場所**：Google Cloud Console → **API とサービス → 認証情報 → 認証情報を作成 → OAuth クライアント ID**。種類は **ウェブ アプリケーション** を選びます。

2. **リダイレクト URI を入力する**

   **操作**：「承認済みのリダイレクト URI」に 1 節目のアドレスを入力して作成すると、クライアント ID とクライアントシークレットが発行されます。

3. **プロバイダーのアドレスを入力する**

   **操作**：`https://accounts.google.com` を入力します。

4. **ユーザー名の取得元を調整する**

   **操作**：Google は「ユーザー名」という項目を返さないので、「ユーザー名の取得元」を `email` に変えるか、既定のままにして SkyView に自動生成させます。

> **🛑 世界中の誰もがあなたの SkyView にアカウントを作れる状態にしないでください**
>
> 誰が Google でログインできるかは、Google 側の「OAuth 同意画面」で決まります。個人アカウントの場合は公開ステータスを「テスト」のままにし、許可する人をテストユーザーの一覧に追加してください——そうしないと、「初回ログイン時にアカウントを自動作成」を有効にしている状態では、どの Google アカウントからでもあなたの SkyView にアカウントを作れてしまいます。

## 7. Keycloak

1. **Client を新規作成する**

   **場所**：realm を選んでから **Clients → Create client**。Client type は **OpenID Connect** を選び、Client ID は自分で決めます（`yunkan` など）。

2. **機密クライアントを有効にする**

   **操作**：次の画面で **Client authentication** をオンにし、Authentication flow で **Standard flow** にチェックを入れます。

3. **リダイレクト URI を入力する**

   **操作**：**Valid redirect URIs** に 1 節目のアドレスを入力します。

4. **シークレットを書き写してアドレスを入力する**

   **操作**：作成後、**Credentials** タブで **Client secret** をコピーします。プロバイダーのアドレスには `https://kc.example.com/realms/<realm 名>` を入力します。

Keycloak は既定でユーザー名の項目を返すため、「ユーザー名の取得元」は既定のままで構いません。

## 8. はじめてこれでログインすると何が起きるか

1. **プロバイダーへ移動してログインする**

   **操作**：SkyView のログイン画面で「〇〇 でログイン」を押すとプロバイダーへ移動します。そちらの方法でログインし（プロバイダー自身の 2 段階認証も含みます）、終わると自動的に SkyView へ戻ります。

2. **SkyView が対応するアカウントを探す**

   **操作**：こちらでは何もしません。SkyView はプロバイダーから渡された利用者の識別子で照合します。関連付け済みのものが見つかれば本人と判断し、そのまま入れます。

3. **見つからなかったときの 2 つの分かれ道**

   **自動作成が有効なとき**：その場で SkyView のアカウントを新しく作ります。権限は設定した既定値になり、この外部アカウントが関連付けられます。
   **自動作成が無効なとき**：このアカウントはまだ SkyView のユーザーと関連付けられていないと表示されます。次の節の手順で手動で関連付けるか、管理者に自動作成を有効にしてもらってください。

> **ℹ️ 自動作成されたアカウントにはパスワードがありません**
>
> そのアカウントはシングルサインオンでしか入れません。パスワードでもログインできるようにしたい場合は、管理者が**ユーザー管理**でパスワードを設定してください。あわせて、ユーザー管理で新しい人の「カメラ権限」を設定することも忘れないでください——既定の権限は閲覧者ですが、どのカメラが見えるかはこの設定で決まります。

## 9. 外部アカウントを既存の SkyView アカウントに関連付ける

「すでに SkyView の管理者アカウントがあり、これからは NAS のアカウントでそこにログインしたい」という場合に向いています。

1. **まず SkyView のアカウントで通常どおりログインする**

   **操作**：ユーザー名とパスワードでいつもどおりログインします。

2. **関連付けの入口を開く**

   **場所**：マイアカウント → ログインのセキュリティ →「関連付け済みのアカウント」。

3. **「〇〇 アカウントを関連付ける」を押す**

   **操作**：プロバイダーへ移動して 1 回ログインし、戻ってくれば完了です。
   **成功の目安**：カードにそのアカウントが並びます。次回からログイン画面でそのボタンを押すと、この SkyView アカウントにそのまま入ります。

1 つの SkyView アカウントには複数のプロバイダーアカウントを関連付けられます。逆に、1 つのプロバイダーアカウントを関連付けられる SkyView アカウントは 1 つだけです——そうしないと「これでログインしたら誰として入るのか」が決まらなくなるためです。関連付けの解除は同じカードで行えます。

> **⚠️ パスワードのないアカウントは解除できません**
>
> 自動作成されたアカウントにはもともとパスワードがないため、関連付けを解除すると自分で自分を締め出すことになります。SkyView はこれを止め、先に管理者にパスワードを設定してもらうよう案内します。

## 10. スマホアプリ

Android と iOS のどちらでも使えます。ログイン画面でサーバーのアドレスを正しく入力すると（アドレスの横の点が緑に変わります）、ボタンが自動的に現れます。押すと端末のブラウザーが開いてログインが完了し、そのままアプリへ戻ります。

- **スマートフォンのブラウザーから同じ SkyView のアドレスを開けること** —— 外出先で使うなら、サーバーのアドレス欄にはインターネット向けのアドレスを入力しておく必要があります。
- **「パスワードを保存」は使えません** —— この項目が覚えるのは SkyView 側のパスワードですが、この種のアカウントにはパスワードがありません。手間を減らしたい場合は、プロバイダー側でログイン状態を保っておけばブラウザーが覚えてくれます。

## 11. よくある質問

- **リダイレクト URI が一致しないと表示される** —— プロバイダー側に登録したアドレスと、SkyView が実際に送っているアドレスが違います。SkyView の設定画面の上部にあるアドレスを開き、プロバイダーの管理画面と 1 文字ずつ見比べてください。プロトコル、ポート、末尾のスラッシュ、大文字と小文字です。LAN とインターネットで入口が 2 つあるなら、それぞれ 1 行ずつ登録します。
- **アドレスとサービスが返す識別子が一致しないと表示される** —— 「プロバイダーのアドレス」がプロバイダー本来の issuer ではありません（別のページからコピーした場合がほとんどです）。プロバイダーのアプリケーション詳細に戻り、「Issuer / OpenID Configuration」の値をコピーし直してください。末尾の `/.well-known/openid-configuration` やスラッシュは影響しません。
- **戻ってきたときにログインを完了できなかったと表示される** —— よくあるのは 2 つです。1 つは SkyView が動いているマシンの時刻ずれ（プロバイダーと 2 分以上ずれると拒否されます。NAS で自動時刻合わせを有効にしていない例が多いです）。もう 1 つはクライアントシークレットの誤りで、新しく発行し直して貼り付けてから保存してください——この欄は空欄が「変更しない」を意味するため、新しい値を実際に貼り付けないと反映されません。
- **設定の変更はいつ反映されるか** —— すぐに反映されます。プロバイダーのアドレスを変えると SkyView はキャッシュしていたプロバイダー情報を破棄し、次にボタンを押したときから新しいアドレスを使います。
- **シングルサインオンを無効にしたら、自動作成されたアカウントは残るのか** —— 残ります。関連付けもそのままで、ログイン画面にボタンが出なくなるだけです。完全に消したい場合はユーザー管理でアカウントを削除してください。
- **特定の人だけに使わせられるか** —— できますが、絞り込みはプロバイダー側で行います（Authentik のポリシー、Google のテストユーザーの一覧、Synology のユーザーグループ）。SkyView 側にある大まかなスイッチは「初回ログイン時にアカウントを自動作成」で、これを無効にすると、あなたが手動で関連付けた人だけが入れます。

## 関連ページ

- [ユーザーと権限](/docs/users)——新しく入った人にカメラ権限を割り当てる
- [2 段階認証](/docs/two-factor)——SkyView 自身の確認コード。シングルサインオンとはどちらか一方で足ります
- [リモートアクセス](/docs/remote-access)——ドメインと証明書の設定

---

出典:https://yun-kan.com/ja/docs/sso
