2
1
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Microsoft Entra ID(旧AzureAD)を使ってNextcloudのSAML認証(シングルサインオン)してみる

Last updated at Posted at 2024-06-20

はじめに;AzureとNextcloud:SAMLとSSO設定-全体図

(拡大してご利用ください)
AzureとNextcloud_SAMLとSSO設定-全体図.png

  • 各項目の番号と同じ項目名は、それぞれ参照元(コピー元)と参照先(ペースト先)です。
  • ※以降、それぞれの項目の操作などを説明します。

【利用環境】

  • 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)
  • Azureからダウンロードした「④証明書(Base64)」はテキストエディタで開いて
    該当欄にコピペします。

    操作の様子

  • (5)[属性マッピング]の必要欄を入力する。
    ①クレーム名
    http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
    ※これによりユーザーのメールアドレスが自動登録される。
    操作画面
    
欄(プレースホルダー) 入力する値
表示名をマップする属性。 (空欄のまま)
電子メールアドレスをマップする属性。 ①クレーム名
クオータをマップする属性。 (空欄のまま)
ユーザーグループをマップする属性。 (空欄のまま)
ユーザーをホームにマップするための属性。 (空欄のまま)
Attribute map the users MFA login status (空欄のまま)

3. NextcloudにSSOログインを試してみる

成功しました。

参考URLなど


・・・そして自分自身の試行錯誤。

以上です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1