Moodle 5.3 日本語ドキュメント(第一次翻訳):ほぼすべてのページが日本語に翻訳されました。まだ第一次翻訳のため、不自然な表現や誤訳が残っている可能性があります。お気づきの点があれば、ページコメントでお知らせいただくか、直接編集してください。スクリーンショットの多くは、まだ英語版の画面のままです。以前のバージョンの日本語ドキュメントは、バージョンメニューからご覧いただけます。
Moodle 5.3 Japanese documentation (first-pass translation): almost all pages have now been translated into Japanese. As this is a first pass, some wording may read unnaturally or be mistranslated. If you notice anything, please leave a page comment or edit the page directly. Most screenshots still show the English interface. Japanese documentation for earlier versions is available from the version menu.

Shibboleth

提供: MoodleDocs
移動先:案内、検索


Shibbolethとは

Shibbolethは、コンピュータネットワークおよびインターネット向けのシングルサインオンによるログインシステムです。異なる組織や機関からなるフェデレーションが運営するさまざまなシステムに、1つのアイデンティティだけでログインできます。フェデレーションは、多くの場合、大学や公共サービス機関です。

Shibbolethは、Internet2コンソーシアムが作成した、SAMLに基づくフェデレーテッドアイデンティティベースの認証および認可インフラストラクチャのためのミドルウェアアーキテクチャおよびオープンソース実装です。フェデレーテッドアイデンティティにより、あるセキュリティドメインのユーザに関する情報を、共通のフェデレーション内の他の組織に提供できます。これにより、ドメインをまたがるシングルサインオンが可能になり、コンテンツプロバイダがユーザ名とパスワードを管理する必要がなくなります。アイデンティティプロバイダ(IdP)はユーザ情報を提供し、サービスプロバイダ(SP)はこの情報を利用して、保護されたコンテンツへのアクセスを制御します。

主なShibbolethフェデレーション

UK Access Management Federation for Education and Research

英国では、BectaとJISCが、シングルサインオンを提供するために、Shibbolethを使用した教育フェデレーションUK Access Management Federation for Education and Researchを導入しています。つまり、Moodleを使用している英国の教育機関は、組織がUK Access Management Federationに参加し、ユーザのアイデンティティがLA/RBCの使用するアイデンティティプロバイダに保持されていれば、Shibboleth経由でユーザを認証できるはずです。イングランドおよびウェールズの公立学校の場合、これはおそらく地方自治体(Local Authority)または地域ブロードバンドコンソーシアム(RBC)に連絡することを意味します。現在の英国フェデレーションのメンバ一覧はこちらにあります。

Swiss Authentication and Authorization Infrastructure (SWITCHaai)

スイスでは、SWITCH財団がSwiss Authentication and Authorization Infrastructure (SWITCHaai)というフェデレーションを運営しています。このフェデレーションには、約160の機関と、Switch edu-IDによるスイスに住むすべての人を対象としたユニバーサルログイン(約90万人のユーザ)が含まれます。

auth/shibboleth/README.txt

Moodleディストリビューションに含まれるauth/shibboleth/README.txtファイルの内容です:

 Moodle用Shibboleth認証
 -------------------------------------------------------------------------------
 
 要件:
 - Shibboleth Service Provider 1.3以降。2.1以降を推奨します。
 Shibbolethのセットアップ方法については、所属するShibbolethフェデレーションの
 ドキュメントをご覧ください。
 
 変更履歴:
 - 11. 2004: Markus Hagmanが作成
 - 05. 2005: Martin Dougiamasがログイン処理を修正
 - 05. 2005: Lukas Haemmerleがさまざまな拡張および修正を実施
 - 06. 2005: Martin LanghoffおよびLukas Haemmerleが新しいフィールドロックおよび
             プラグイン設定構造に対応
 - 10. 2005: エラーメッセージを改善し、テキストを言語ディレクトリに移動
 - 02. 2006: 認可が正しく機能するよう認証を簡素化
             IIS向けの手順を追加
 - 11. 2006: Moodle 1.7以降、ユーザケイパビリティが正しく読み込まれるよう変更
 - 03. 2007: 認証方法をMoodle 1.8に対応
 - 07. 2007: 大文字のユーザ名で問題が発生するバグを修正
 - 10. 2007: Markus Hagmanの要望により、メールアドレス、姓および名の属性を
             必須から除外
 - 11. 2007: WAYFサービスをMoodleに統合
 - 12. 2008: Shibboleth 2.xおよびシングルログアウトのサポートを追加
 - 1.  2008: ログアウトフックを追加し、Shibbolethの設定文字列をUTF-8の認証
             言語ファイルに移動
 - 3.  2009: テュービンゲン大学のIna M�llerおよびワシントン大学のPeter Ellisから
             報告されたさまざまな改善およびバグ修正を追加
 - 4.  2009: コールバックスクリプトに関するログアウトの要件を追加
 - 6.  2009: 統合ディスカバリサービス使用時のハンドラURLを変更
 - 10. 2009: Shibboleth設定でのHTMLエンティティの保持を修正
 
 デュアルログインを使用するMoodleの設定
 -------------------------------------------------------------------------------
 1. moodle/auth/shibboleth/index.phpディレクトリをShibbolethで保護します。
    このディレクトリのindex.phpページが、実際にShibbolethユーザをログインさせます。
    Apacheの場合、Apacheの設定に次のようなルールを定義する必要があります:
 
 --
 <Directory  /path/to/moodle/auth/shibboleth/index.php>
       AuthType shibboleth
       ShibRequireSession On
       require valid-user
 </Directory>
 --
 
    Moodleへのアクセスを制限するには、アクセスルール「require valid-user」を、
    必要に応じたもの(例:「require affiliation student」)に置き換えます。
 
    IISの場合、Shibboleth設定ファイル(shibboleth.xmlまたはshibboleth2.xml)の
    RequestMapで、auth/shibbolethディレクトリを直接保護する必要があります。
 
 --
 <Path name="moodle" requireSession="false" >
    <Path name="auth/shibboleth/index.php" requireSession="true" >
       <AccessControl>
           ...
       </AccessControl>
    </Path>
 </Path>
 --
 
  参考:
  https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPRequestMapper および
  https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPAccessControl
 
 2. Moodle管理者として「管理 > ユーザ > 認証」に移動し、「Shibboleth」の
    設定をクリックします。
 
 3. フォームの各フィールドに入力します。「ユーザ名」「名」「姓」などのフィールドには、
    対応するMoodleの変数にマッピングしたいShibboleth属性の環境変数名を入力します
    (例:人の姓には「Shib-Person-surname」。利用可能な属性については、
    Shibbolethのドキュメント、または所属するShibbolethフェデレーションの
    ドキュメントを参照してください)。
    特に「ユーザ名」フィールドは非常に重要です。この属性が、Shibbolethユーザの
    Moodle認証に使用されるためです。
 
  #############################################################################
  Moodleが必要とするShibboleth属性:
  Moodleが正しく動作するには、Shibbolethが少なくとも、Moodleでユーザ名として
  使用される属性を提供する必要があります。この属性は、すべてのShibbolethで
  一意である必要があります。
  Moodleはユーザ名を小文字に変換することに注意してください。そのため、ユーザ名は
  全体として大文字と小文字を区別しない動作になります。
  Moodleで使用するすべての属性は、一定の長さに収まっている必要があります。そうでない
  場合、Moodleは末尾を切り捨てます。ユーザプロファイルの各フィールドの最大長に
  ついては、Moodleのドキュメントを参照してください。
  #############################################################################
 
 4.a 外部のWhere Are You From(WAYF)サービスを使用し、Shibbolethを唯一の認証方法に
    する場合は、「管理 > ユーザ > 認証オプション」の「共通設定」にある
    「代替ログインURL」に、ファイル「moodle/auth/shibboleth/index.php」のURLを
    設定します。
    これにより、Shibbolethログインが強制されます。
 
 4.b Moodle統合WAYFサービスを使用する場合は、MoodleのShibboleth認証設定で
   「Moodle WAYFサービス」チェックボックスをオンにして有効にし、
   「アイデンティティプロバイダ」テキストエリアに、エンティティIDのリストを、
   名前および任意のSessionInitiator URLとともに入力する必要があります。
   SessionInitiator URLは通常、同じホストを指す絶対URLまたは相対URLです。
   SessionInitiator URLを指定しない場合は、デフォルトの「/Shibboleth.sso」
   (Shibboleth 1.3.xでのみ機能)が使用されます。Shibboleth 2.xの場合は、
   SessionInitiatorとして「/Shibboleth.sso/DS」を追加する必要があります。
   参考:https://wiki.shibboleth.net/confluence/display/SHIB/SessionInitiator
   および https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPSessionInitiator
 
   重要:以前のバージョンのMoodleからアップグレードし、統合WAYFを使用したい場合は、
                   ステップ1でmoodle/auth/shibboleth/内のindex.phpスクリプトのみが
                   保護され、他のスクリプト、特にlogin.phpスクリプトは保護*されていない*
                   ことを確認する必要があります。
 
   Shibboleth 1.3ですでに統合WAYFを使用していた場合、Moodleを更新した後に
   統合WAYFが機能しなくなることがあります。これは、暗黙的に設定されるデフォルトの
   SessionInitiatorが、MoodleとShibbolethの両方で変更されたためです。そのため、
   Shibboleth 1.3では3番目のパラメータとして/Shibboleth.ssoを追加する必要が
   ありますが、Shibboleth 2.xではこれが/Shibboleth.sso/DSになります。
 
 5.  「Shibboleth設定」の変更を保存します。
 
   重要:4.b(統合WAYFサービス)を選択した場合、設定を保存すると、
                   Moodleの代替ログインURLがMoodleのウェブルートURLで上書きされます。
 
 6.  4.bの統合WAYFサービスを使用せずに、別の認証方法に加えてShibbolethを使用する
   場合は、「管理 > ユーザ > 認証管理」の「インストラクション」を変更して、
    Shibbolethで保護され(ステップ1を参照)、Shibbolethのログイン処理を開始する
    moodle/auth/shibboleth/index.phpファイルへのリンクを含めます。
    このフィールドにはHTMLコードも使用できます。例えば、Shibbolethログインボタン
    として画像を含めることができます。
 
    注:現在のところ、デュアルログインを、Moodleが提供する統合WAYFサービス(4.b)と
          一緒に使用することはできません。
 
 7. 認証の変更を保存します。
 
 Shibboleth認証の仕組み
 --------------------------------------------------------------------------------
 ShibbolethでMoodleに認証されるには、基本的に、ユーザがShibbolethで保護されたページ
 /auth/shibboleth/index.phpにアクセスする必要があります。Shibbolethが唯一の認証
 方法である場合(4.aを参照)、ユーザがMoodle WAYFサービスで自分の所属組織を
 選択したとき、または代替ログインURLが保護された/auth/shibboleth/index.phpに
 設定されている場合に、これが自動的に行われます。
 それ以外の場合、ユーザはステップ5.bで用意したデュアルログインページのリンクを
 クリックする必要があります。
 
 Moodleは基本的に、ユーザ名としてマッピングしたShibboleth属性が存在するかどうかを
 確認します。この属性は、ユーザがShibbolethで認証されている場合にのみ存在する
 はずです。
 
 ユーザのMoodleアカウントがまだ存在しない場合は、自動的に作成されます。
 
 すべてのShibbolethユーザがMoodleサイトにアクセスできてしまうことを防ぐには、
 ウェブサーバの設定(ステップ1を参照)の「require valid-user」の行を、特定の
 ユーザのみを許可するよう変更する必要があります。ステップ1で何らかの認可ルールを
 定義した場合、それらはShibboleth自体によってチェックされます。これらのルールを
 満たしたユーザのみが、実際に/auth/shibboleth/index.phpにアクセスしてログイン
 できます。
 
 Shibbolethと別の認証方法を併用できます(手動ログインでテスト済み)。そのため、
 Shibbolethログインを持たないユーザが少数いる場合は、そのユーザ用に手動アカウント
 を作成し、手動ログインを使用してもらうことができます。他の認証方法の場合は、
 まずそれらを設定してから、Shibbolethを認証方法として設定する必要があります。
 ユーザは、Moodleに2つのアカウントを持っていない限り、1つの認証方法でのみ
 ログインできます。
 
 カスタムログインページを使用したShibbolethデュアルログイン
 --------------------------------------------------------------------------------
 ニーズにより合ったデュアルログインページを作成できます。そのためには、2つの
 認証方法(例:「手動アカウント」と「Shibboleth」)を設定し、独自のデュアル
 ログインページへの代替ログインリンクを指定する必要があります。そのページには
 基本的に、Shibbolethログイン用のShibbolethで保護されたページ
 (「/auth/shibboleth/index.php」)へのリンクと、「username」および「password」を
 moodle/login/index.phpに送信するフォームが必要です。次に、このウェブページを
 代替ログインページとして設定します。
 詳細な手順および要件については、Moodleのドキュメントを参照してください。
 
 MoodleでのShibbolethユーザデータの使用方法をカスタマイズする方法
 --------------------------------------------------------------------------------
 MoodleのShibboleth設定の中に、データ操作フックとして使用できるPHPファイルへの
 パスを入力するフィールドがあります。
 Shibboleth属性がMoodleで使用される方法をさらに加工したい場合に、これを使用でき
 ます。セキュリティ上の理由から、このファイルを現在のサイトデータディレクトリ
 ($CFG->dataroot)内に置くことはできません。
 
 例1:Shibbolethフェデレーションが、ユーザの優先言語を指定する属性を使用しているが、
          この属性の内容がMoodleのデータ表現と互換性がない場合。例えば、
          Shibboleth属性には「German」が入っているが、Moodleには「de」のような
          2文字の値が必要な場合です。
 
 例2:国、都市および番地が1つのShibboleth属性で提供され、これらの値をMoodleの
          ユーザプロファイルで使用したい場合。この場合、対応する属性を解析して
          ユーザフィールドに値を入れる必要があります。
 
 このフックを使用するには、熟練したPHPプログラマである必要があります。ファイル
 moodle/auth/shibboleth/auth.php、特にこのファイルがインクルードされている関数
 「get_userinfo」を確認することを強く推奨します。
 
 ファイルのコンテクストは、このログイン関数内と同じです。そのため、オブジェクト
 $resultを直接編集できます。
 
 ファイルの例:
 --
 <?php
 
   // Set the zip code and the adress
   if ($_SERVER[$this->config->field_map_address] != )
   {
       // $address contains something like 'SWITCH$Limmatquai 138$CH-8021 Zurich'
       // We want to split this up to get:
       // institution, street, zipcode, city and country
       $address = $_SERVER[$this->config->field_map_address];
       list($institution, $street, $zip_city) = explode('$', $address);
       preg_match('/ (.+)/', $zip_city, $regs);
       $city = $regs[1];
 
       preg_match('/(.+)-/',$zip_city, $regs);
       $country = $regs[1];
 
       $result["address"] = $street;
       $result["city"] = $city;
       $result["country"] = $country;
       $result["department"] = $institution;
       $result["description"] = "I am a Shibboleth user"; 
   }
 ?>
 --
 
 サービスプロバイダを2.xにアップグレードする方法
 -------------------------------------------------------------------------------
 サービスプロバイダ1.3.xを2.xにアップグレードする場合、バージョン2.0で属性の伝播に
 関するデフォルトの動作が変更されたことに注意してください。
 
 サービスプロバイダ1.3.xはShibboleth属性をHTTPリクエストヘッダとしてウェブサーバ
 環境に公開していましたが、サービスプロバイダ2.xは属性を環境変数として公開します。
 これにより、一部のプラットフォームではセキュリティが向上します。
 
 ただし、この変更により属性名が変わります。
 例えば、1.3.xでは姓の属性は「HTTP_SHIB_PERSON_SURNAME」として公開されていましたが、
 この属性は$_SERVER['Shib-Person-surname']で、または/etc/shibboleth/attribute-map.xml
 ファイルによっては単に$_SERVER['sn']で利用できるようになります。
 
 Moodleは、どのShibboleth属性をどのMoodleユーザプロファイルフィールドにマッピング
 するかを知る必要があるため、サービスプロバイダのアップグレード後には、マッピングも
 更新されていることを確認する必要があります。
 
 ********************************************************************************
 Moodleから自分自身を締め出してしまうおそれがあるため、サービスプロバイダを
 アップグレードする際は、次の手順に従うことを強く推奨します:
 1. アップグレードの前に手動認証を有効にします。
 2. サービスプロバイダを2.xにアップグレードする前に、管理者のパーミッションを持つ
    手動アカウントが少なくとも1つ機能していることを確認します。
 3. SPのアップグレード後、このアカウントを使用してMoodleにログインし、
    「サイト管理 > ユーザ > Shibboleth」の属性マッピングを、変更された属性名を
    反映するよう調整します。
    属性名は、ファイル/etc/shibboleth/attribute-map.xmlに、属性定義の「id」の
    値として記載されています。
 4. 統合WAYFを使用している場合は、各エントリの3番目のパラメータを
    「/Shibboleth.sso/DS」に設定する必要がある場合があります。
 5. Shibbolethアカウントでログインをテストします。
 6. すべて正常に動作したら、手動認証を再度無効にします。
 ********************************************************************************
 
 ログアウトサポートを追加する方法
 --------------------------------------------------------------------------------
 MoodleでShibbolethのログアウトをサポートするには、Shibbolethサービスプロバイダ(SP)
 にMoodleのログアウト機能を認識させる必要があります。そうして初めて、SPがMoodleの
 フロントチャネルまたはバックチャネルのログアウトハンドラをトリガできるようになります。
 
 SPにMoodleのログアウトを認識させるには、Shibbolethのメイン設定ファイル
 shibboleth2.xml(通常は/etc/shibboleth/内)の<MetadataProvider>要素の直前に、
 次の内容を追加する必要があります。
 
 --
 <Notify
   Channel="back"
   Location="https://#YOUR_MOODLE_HOSTNAME#/moodle/auth/shibboleth/logout.php" />
 --
 
 次に、Shibbolethデーモンを再起動し、ログファイルにエラーがないか確認します。
 エラーがなければ、Moodleにアクセスし、Shibboleth経由で認証してから、次のURLに
 アクセスすることで、ログアウト機能をテストできます:
 #YOUR_MOODLE_HOSTNAME#/Shibboleth.sso/Logout(標準的なShibbolethのインストールを
 想定しています)。すべて正常に動作すれば、ログアウトに成功したことを示す
 Shibbolethのページが表示され、Moodleに戻るとMoodleからもログアウトされている
 はずです。
 
 要件:
 - PHPにSoap拡張モジュールが必要です。手動でインストールしなければならない場合が
   あります。詳細は http://ch.php.net/soap をご覧ください。
 - ログアウトは、Shibboleth Service Provider 2.1以降でのみ機能します。
 - /moodle/auth/shibboleth/logout.phpはShibbolethで保護*してはいけません*!
   Moodle全体がShibbolethで保護されている場合は、Apacheの設定で、他のすべての
   requireルールの後に、次のようなものを追加する必要があります。
 
 --
 <Directory /path/to/moodle/auth/shibboleth/logout.php>
     AuthType shibboleth
     ShibRequireSession Off
     require shibboleth
 </Directory>
 --
 
 IISを使用している場合は、次のようにして同じことを実現できます:
 --
 <Path name="auth/shibboleth/logout.php" requireSession="false">
 --
   (shibboleth2.xmlのRequestMap内)
 
 制限事項:
 シングルログアウトは、SPとIdPの両方でSAML2が使用されている場合にのみサポート
 されます。2009年10月の時点で、Shibboleth Identity Provider 2.1.4はまだシングル
 ログアウト(SLO)をサポートしていません。そのため、Shibbolethのみの構成では
 まだシングルログアウト機能を使用できませんが、SimpleSAML PHPなど、アイデンティティ
 プロバイダとして使用できる他のSAML2製品があるかもしれません。
 
 SLOがまだサポートされていない理由の1つは、フロントチャネルおよびバックチャネルの
 ログアウトをサポートするよう対応したアプリケーションがまだ多くないことです。
 Moodleのログアウトが、開発者がSLOを実装する動機付けになることを願っています。
 一方で、最も簡単で安全なログアウト方法は、今でもユーザにウェブブラウザを終了
 するよう伝えることです :)
 
 このトピックの背景情報については、
 https://wiki.shibboleth.net/confluence/display/SHIB2/SLOIssues および
 https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPLogoutInitiator
 も参照してください。
 
 --------------------------------------------------------------------------------
 Shibboleth認証に関する問題や質問については、次の担当者に連絡してください:
 Lukas Haemmerle <lukas.haemmerle@switch.ch> または Markus Hagman <hagman@hytti.uku.fi>

設定例の詳細

関係するコンポーネントを示すための例として、特定のフェデレーションで必要な手順を以下に示します。

表記

- すべて大文字の表現は、実際の値のプレースホルダです。例えば、ドキュメント中の/PATH/TO/MOODLEは、サーバでは/var/www/html/moodleを意味する場合があります。

- シェルコマンドの「# COMMAND」という形式の「#」は、そのCOMMANDをスーパーユーザとして実行する必要があることを意味します。スーパーユーザは、ユーザ「root」、またはsudo権限を持つ別のユーザの場合があります。後者の場合は、「$ sudo COMMAND」のように、コマンドの前にsudoを付ける必要があります。このコマンドの「$」は、特権のないユーザであることを示します。

前提条件

- MoodleサイトがDebian GNU/Linux、またはUbuntu LinuxなどのDebian派生ディストリビューションで動作していること。

- このドキュメントでは、Linuxディストリビューションがシステムマネージャ「Systemd」を使用していることを前提としています。ただし、SysVやUpstartなど、別のinitシステム用にコマンドを簡単に変更できます。

- ウェブサーバApache2を実行していること。

- サイトがデフォルトポート443でHTTPSを提供していること。このドキュメントでは、そのURLを https://DOMAIN と表記します。DOMAINはMoodleサーバのドメイン名を表します。つまり、MoodleのURLが https://lms.example.com/ の場合、DOMAINはlms.example.comです。

サービスプロバイダの設定

1. Apache2用のShibbolethモジュールをインストールします

Shibbolethサービスプロバイダ(SP)用のApacheモジュールと、それを支えるShibデーモンを含むDebianパッケージlibapache2-mod-shibをインストールします:

   # apt install libapache2-mod-shib --no-install-recommends

これにより、デフォルトの設定ファイル一式を含むディレクトリ/etc/shibbolethが作成され、システムサービスshibもインストールされます。

2. フェデレーションのメタデータ署名証明書federation-cert.pemを取得します

   # wget https://FEDERATIONREGISTRY/signedmetadata/metadata-signer -O /etc/shibboleth/federation-cert.pem

3. Shibbolethのメイン設定ファイル/etc/shibboleth/shibboleth2.xmlを編集します

3.1 ApplicationDefaultsタグのentityIDを、使用するサービスのものに変更します

   <ApplicationDefaults entityID="https://DOMAIN/shibboleth"
       REMOTE_USER="eppn subject-id pairwise-id persistent-id"
       cipherSuites="DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1">

ApplicationDefaultsタグの終わりはずっと下にあることに注意してください。ここで終了タグを追加しないでください!

3.2 ディスカバリサーバを設定します

           <SSO  discoveryProtocol="SAMLDS" discoveryURL="https://DISCOVERYSERVER">
             SAML2
           </SSO>

3.3 MetadataProviderを設定します

 <MetadataProvider type="XML" url="https://METADATAPROVIDER/signedmetadata/metadata.xml" legacyOrgName="true" backingFilePath="test-metadata.xml" maxRefreshDelay="7200">
 
   <MetadataFilter type="Signature" certificate="federation-cert.pem" verifyBackup="false" />
 
   <MetadataFilter type="RequireValidUntil" maxValidityInterval="864000" />
 </MetadataProvider>

3.4 鍵ファイルおよび証明書ファイルを準備します

 <CredentialResolver type="File" use="signing"  key="lms-signing-key.pem" certificate="lms-signing-cert.pem" />
 <CredentialResolver type="File" use="encryption" key="lms-encrypt-key.pem" certificate="lms-encrypt-cert.pem" />

4. SPのメタデータ認証情報を作成します

 # /usr/sbin/shib-keygen -n lms-signing -e https://DOMAIN/shibboleth
 # /usr/sbin/shib-keygen -n lms-encrypt -e https://DOMAIN/shibboleth

5. Apache用のShibbolethサービスを開始します

5.1 サービスを開始する前に設定をテストします:

 # shibd -t /etc/shibboleth/shibboleth2.xml
 [possible errors or warnings]
 overall configuration is loadable, check console or log for non-fatal problems

エラーまたは警告がある場合は、続行する前にそれらを調べる必要があります。

5.2 サービスを開始します:

 # systemctl start shibd


6. ApacheのバーチャルホストでShibbolethを有効にします

6.1 ApacheでShibbolethログインを有効にするには、/PATH/TO/MOODLE/auth/shibboleth/index.phpファイルをShibbolethで保護します。また、/etc/apache2/sites-available/SOMETHING.confファイルにSSL証明書を追加します:

 <IfModule mod_ssl.c>
 <VirtualHost *:443>
 
     ServerName DOMAIN
     ServerAdmin YOU@DOMAIN
     DocumentRoot /PATH/TO/MOODLE
 
     ErrorLog ${APACHE_LOG_DIR}/DOMAIN-error.log
     CustomLog ${APACHE_LOG_DIR}/DOMAIN-access.log combined
     
     SSLCertificateFile /etc/ssl/certs/ssl-DOMAIN.crt
     SSLCertificateKeyFile /etc/ssl/private/ssl-DOMAIN.key
 
   <Location /moodle>
      # just comment out
      # ShibRequestSetting applicationId mdl
   </Location>
 
   <Directory /PATH/TO/MOODLE/auth/shibboleth/index.php>
     AuthType shibboleth
     # just comment out the next line and add the two lines below that
     # ShibRequestSetting applicationId mdl
     ShibRequireSession On
     require valid-user
    </Directory>
 </VirtualHost>
 </IfModule>

6.2 Shibdを有効にしてApacheをリロードします

   # a2enmod shib
   # systemctl reload apache2.service 

アイデンティティプロバイダの設定

7. サイトをフェデレーションに登録します

サイトのWAYFがディスカバリサービスに移動し、正しいIdPに誘導されるよう、サイトをフェデレーションに登録する必要があります。

7.1 アプリケーションのメタデータを取得します

メタデータは、URL https://DOMAIN/Shibboleth.sso/Metadata で取得できます。

7.2 メタデータと管理情報をフェデレーションに提出します

通常、フェデレーションには、メタデータをアップロードしてさまざまな管理情報を入力するためのウェブサイトがあります。フェデレーションの管理者がそのリンクを共有しているはずです。画面の指示に従ってください。

フェデレーションの運営者がリクエストを承認すると、SP登録リンクが届きます。


8. MoodleでShibbolethプラグインを有効にして設定します

登録に成功したら、MoodleでShibbolethプラグインを設定する必要があります。そのためには、まずMoodleでプラグインを有効にする必要があります。

8.1 MoodleでShibbolethプラグインを有効にします

Moodle管理者として、サイト管理 > プラグイン > 認証に移動し、「目」のアイコンをクリックしてShibbolethを有効にします。

8.2 MoodleでShibbolethプラグインを設定します

Moodleでアカウントを作成するには、少なくとも「ユーザ名」「名」「姓」「メールアドレス」の4つのフィールドが必要です。そのため、これらをIdPデータベースの対応する属性にマッピングする必要があります。このデータマッピングは、サイト管理 > プラグイン:認証 > Shibbolethなどで設定する必要があります。ここでも典型的な設定例を示します:

ユーザ名:eppn

データマッピング (名):givenName

データマッピング (姓):sn

データマッピング (メールアドレス):mail

上記の3つすべてで、「ローカルを更新する」を「毎回ログイン時」に、「設定値のロック」を「空の場合はロックしない」に設定します。

さらに、次の変更を行います:

Moodle WAYFサービス:No

アイデンティティプロバイダ (auth_shibboleth | organization_selection):ボックス内のすべてを削除します

ShibbolethサービスプロバイダのログアウトハンドラURL:/Shibboleth.sso/Logout

そして保存します。変更はすぐに有効になり、サービスを再起動する必要はありません!

これで、​https://DOMAIN/login/ にアクセスし、Shibbolethを選択してフェデレーションのWAYFに移動できます。

デバッグ方法

  • https://DOMAIN/Shibboleth.sso/Login にアクセスします。フェデレーションのディスカバリサービスに移動するので、そこでIdPを選択する必要があります。そこからIdPのログインページに移動します。認証情報が受け入れられると、Moodleサイトに戻ります。Moodleサイトに戻ったら、https://DOMAIN/Shibboleth.sso/Session にアクセスします。次の例のように、必要なすべての属性が表示されるはずです:

一部のIdPは、最小限のユーザフィールドしかMoodle SPと共有しないため、問題が発生する場合があります:

  • Shibbolethフィールドの欠落に関連するMoodleのエラーは、Shibboleth認証プラグイン内のデータマッピングを変更し、フィールドがロックされていないことを確認することで修正できます。Shibbolethが対応する情報を自動的に提供しない場合、ユーザは手動でデータを入力するよう求められます。
  • ユーザ名の無効な文字に関連するMoodleのエラーは、「ユーザ名に拡張文字を許可する」を有効にすることで修正できます(セキュリティ > サイトポリシーにあります)。

外部リンク