はじめに;AzureとNextcloud:SAMLとSSO設定-全体図
- 各項目の番号と同じ項目名は、それぞれ参照元(コピー元)と参照先(ペースト先)です。
- ※以降、それぞれの項目の操作などを説明します。
【利用環境】
- Nextcloud 25.0.13 ※PHP7.4最終バージョン
- SSO & SAML authentication 5.2.7
- さくらのレンタル(ビジネス)PHP7.4
【運用について】
- 利用者はNextcloudにSSOでログインする。
- Nextcloudに登録されていないユーザーはログイン後に自動生成される。
- 管理者はNextcloudのローカルユーザーで作成しておいて、次のURLでログインする。
https://{構築したNextcloudのURL}/index.php/login?direct=1
1. Azure - Microsoft Entra ID の設定
1.1. エンタープライズアプリケーション - 独自のアプリケーションを作成
Azureコンソール画面( https://portal.azure.com/ )の【エンタープライズアプリケーション > Microsoft Entra ギャラリーを参照する】にて独自のアプリケーションを作成します。
- (1)[Microsoft Entra ID]を選択。
- (2)[エンタープライズアプリケーション]を選択。
- (3)[+ 新しいアプリケーション]をクリック。
- (4)[+ 独自のアプリケーションの作成]をクリック。
-
(5)独自のアプリケーションの作成項目を入力し、[作成]ボタンを押す。
- 任意のアプリ名を付ける(例:nextcloud-sso)
- [ギャラリーに見つからないその他アプリケーションを統合します(ギャラリー以外)]にチェックする。
- [作成]ボタンを押す。
1.2. エンタープライズアプリケーション - ユーザの登録
シングルサインオン(SSO)させるユーザを登録します。
- (1)作成したアプリの概要画面で[ユーザとグループの割り当て]ボタンを押す。
-
(2)[+ ユーザーまたはグループの追加]をクリック。
Active DirectoryプランレベルがFreeの場合グループを割り当てることが出来ず、
個々のユーザを選択していく作業になります。
- (3)ユーザー項目の[選択されていません]リンクをクリック。
- (4)ユーザーを選択(複数または単独)し[追加]ボタンを押す。
- (5)割り当ての追加画面で[割り当て]ボタンを押す。
- (6)「ユーザーとグループ]に割り当てたユーザーが確認できる。
1.3. エンタープライズアプリケーション - SSO(SAMLベース)の設定
Nextcloudへ登録するIDPの値の取得およびNextcloudのエンティティID、応答URLを入力します。
- (1)[シングルサインオン] - [SAML]ボタンを選択。
- (2)[基本的なSAML設定]の[編集]ボタンを押す。
- (3)[基本的なSAML設定]の編集画面で次の様に入力する。
-
⑤識別子(エンティティID)
https://{構築したNextcloudのURL}/index.php/apps/user_saml/saml/metadata
-
⑥応答URL
https://{構築したNextcloudのURL}/index.php/apps/user_saml/saml/acs
(インデックス)1
Nextcloudのバージョン違いによって登録するURLが異なる場合があるそうです。
正確なパラメータは、Nextcloudのアプリ「SSOとSAML認証」設定の「メタデータXMLのダウンロード」で取得できます。
(従ってこのパラメータはNextcloudの設定後、後から上書きする場合もあります。)
-
- (4)[属性とクレーム]の[編集]ボタンを押し、次のUIDが登録されているか確認する。
-
①クレーム名([必要な要求]または[追加の要求]いずれかの項目)
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
UIDのマップする属性に「emailaddress」を採用するのは次の情報
によります。だったのですが、、
(Github:nextcloud/user_saml)o365 External Guests Cannot Access Shares. #637
結局「name」の方を使わないとプロビジョニングエラーになってしまいました。
-
- (5)[SAML証明書]の[証明書(Base64)]をダウンロードしておく。
- ④証明書(Base64)
- (6)[(アプリ名 例:nextcloud-sso)のセットアップ]の次の項目をコピーする。
- ②ログインURL
- ③Microsoft Entra 識別子
2. Nextcloud - SSOとSAML認証アプリの設定
2.1. 「SSO & SAML authentication」アプリをインストール
Nextcloudの[管理者設定] - [アプリ]に移動して実施します。
2.2. 「SSO & SAML authentication」(SSOとSAML認証) アプリの設定
Nextcloudの[管理者設定] - [SSOとSAML認証]に移動して設定します。
- (1)[組み込みのSAML認証を使用する]ボタンを押して初期化する。
-
(2)[グローバル設定]を運用に合わせて選択する。
-
今回は「(Nextcloud表示名)デスクトップクライアントにSAML認証を使用する(ユーザーの再認証が必要)」だけチェックをする。
-
管理者アカウントはSSOを使わず、Nextcloudに個別に登録しておいて、
次のURLでログインする運用とする。
https://{構築したNextcloudのURL}/index.php/login?direct=1
「複数のユーザーのバックエンド(LDAPなど)の使用を許可する」にもチェックをすると、
ログイン操作時に[ダイレクトログイン]と[(SSO&SAMLログイン)]ボタンが並んで表示するが、
利用者が誤ってダイレクトログインを選択する可能性がある。
従って、利用者にはSSOログインしか使わせたくない場合は今回の設定が適切と思われる。
-
-
(3)[一般]の[UIDをマップする属性。]欄にクレーム名を入力する。
①クレーム名
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
※[IDプロバイダーのオプション表示名(デフォルト:"SSO&SAMLログイン")]欄は任意で入力。
(「複数のユーザーのバックエンド(LDAPなど)の使用を許可する」にもチェックが入っている時に利用者に表示されるボタン名になる。)
-
(4)[Identity Providerデータ]の各欄に入力する。
欄(プレースホルダー) | 入力する値 |
---|---|
IdPエンティティの識別子(URIでなければならない) | ③Microsoft Entra 識別子 |
SPが認証要求メッセージを送信するIdPのURLターゲット | ②ログインURL |
URL SPがSLO要求を送信するIdPの場所 | ②ログインURL |
IDPがSLOレスポンスを提供するURL | (空欄のまま) |
IdPの公開X.509証明書 | ④証明書(Base64) |
- (5)[属性マッピング]の必要欄を入力する。
①クレーム名
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
※これによりユーザーのメールアドレスが自動登録される。
欄(プレースホルダー) | 入力する値 |
---|---|
表示名をマップする属性。 | (空欄のまま) |
電子メールアドレスをマップする属性。 | ①クレーム名 |
クオータをマップする属性。 | (空欄のまま) |
ユーザーグループをマップする属性。 | (空欄のまま) |
ユーザーをホームにマップするための属性。 | (空欄のまま) |
Attribute map the users MFA login status | (空欄のまま) |
3. NextcloudにSSOログインを試してみる
成功しました。参考URLなど
-
(SoftBank クラウドテクノロジーブログ様) Azure Active Directoryを使って NextcloudのSAML認証をしてみた ※ 構築手順付き
-
(Abillyz様) AzureADを利用してNextcloudのSAML認証をやってみる
-
(SingleID Document) NextcloudのSAML認証設定
・・・そして自分自身の試行錯誤。
以上です。