ownCloudリポジトリ

ownCloudリポジトリ
タイプリポジトリ
セット該当なし
ダウンロード https://moodle.org/plugins/repository_owncloud
問題点 https://github.com/learnweb/moodle-repository_owncloud
討論
メンテナ ミュンスター大学

一般

このリポジトリにより、MoodleユーザはMoodleファイルピッカーおよびURLリソースモジュール内のownCloudからプライベートファイルに直接アクセスできるようになり、最初にローカルマシンにダウンロードすることなく、ファイルをownCloudからMoodleに直接アップロードできます。


あなたの教育機関は複数のownCloudサーバーを使用していますか?心配しないで、Moodle管理者は複数のownCloudサーバを接続することができ、それらはその後別々にユーザに提示されます。ただし、技術に詳しいユーザーは自分自身のownCloudサーバーを追加することはできません。そのため、Moodle管理者はどのサーバーが接続されているかを常に管理しています。

Nextcloudを使っていますか? ownCloudとNextcloudは同じ履歴を共有します。結果として、それらは非常によく似た働きをします。このリポジトリはownCloudを念頭に置いて開発されましたが、実際にはNextcloudでも機能します。残りの制限はNextcloud 13.0.1で解決されました(詳細についてはNextcloud制限を見てください)。

インストール

このプラグインは、ownCloud(許可されたクライアントとしてMoodleを追加する)およびMoodle(ユーザが接続できるようになるownCloudサーバを追加する)での設定が必要です。公正な警告:設定は非常に技術的になるかもしれません。 既知の問題とヒントのリストを以下の解決方法でまとめています。

MoodleをクライアントとしてownCloudに追加します

前提条件:HTTPSおよびownCloud OAuth 2アプリを有効にした、現在のownCloudインストール(推奨:バージョン10.0.1以降)。または、HTTPS上の現在のNextcloudインストール(推奨:バージョン13.0.1以降)。

管理者としてログインします。 [設定]►[ユーザ認証]に移動し、Moodleインストールをクライアントとして追加します。

リダイレクトURI
あなたのMoodle名あなたのMoodle URL + /admin/oauth2callback.php

たとえば、ユーザーがhttps://moodle.example.comでMoodleにアクセスした場合、リダイレクトURIはhttps://moodle.example.com/admin/oauth2callback.phpになります。名前は自由に選択できますが、ownCloudユーザーに表示されるので、名前はユーザーには一目瞭然のはずです。

クライアントを追加した後、テーブルには対応するクライアント識別子とシークレットが表示されます。それらはMoodleの設定に必要となるので、それらを手元に置いてください。たとえば、ユーザーがhttps://moodle.example.comでMoodleにアクセスした場合、リダイレクトURIはhttps://moodle.example.com/admin/oauth2callback.phpになります。名前は自由に選択できますが、ownCloudユーザーに表示されるので、名前はユーザーには一目瞭然のはずです。クライアントを追加した後、テーブルには対応するクライアント識別子とシークレットが表示されます。それらはMoodleの設定に必要となるので、それらを手元に置いてください。

このプラグインをMoodleにインストールする

このリポジトリの内容をrepository / owncloudにコピーします 。プラグインをインストールするときに追加の設定は管理者に表示されません。ただし、リポジトリが有効になっている場合、管理者はownCloudサーバーを定義している発行者を選択する必要があります。次のステップでは、Moodleの中央OAuth 2サービス設定で必要な発行者を作成する方法について説明します。その後、その発行者を使用してownCloudリポジトリインスタンスが作成されます。

OAuth 2発行者を作成する

あなたのMoodleがあなたのownCloudサーバと通信する方法がわかるように設定する必要があります。このためには、いわゆるOAuth 2発行者を管理者メニューサイト管理►サーバー►OAuth 2サービスに登録する必要があります 。そこにカスタムサービスを作成するを選択します 。自由に名前を選んでください。それはあなたにだけ見せられるでしょう。 [ Moodleをクライアントとして追加]の [ownCloud]設定から[ClientID]と[秘密]を入力します。 [HTTPヘッダーを介してトークン要求を認証する]チェックボックスをオンにします。 [サービスベースURL]として、カスタムポート(存在する場合)を含めて、ご自身のCloudインストールへの完全なURLを入力します。たとえば、ownCloudインストールがhttps://owncloud.example.com:8000/oc/にある場合、これはベースURLです。他の設定を無視して[ 変更を保存 ]をクリックします 。その後、あなたの発行者はテーブルにリストされます。 ownCloudは自動検出をサポートしていないため、そこで[ Configure endpoints ]をクリックして使用するサービスを設定します。 ownCloudリポジトリプラグインの場合、ownCloud固有の4つのエンドポイントを登録する必要があります。

エンドポイント名エンドポイントURL
token_endpoint ベースURL + /index.php/apps/oauth2/api/v1/token
authorization_endpoint ベースURL + /index.php/apps/oauth2/authorize
webdav_endpoint ベースURL + /remote.php/webdav/
ocs_endpoint ベースURL + /ocs/v1.php/apps/files_sharing/api/v1/shares
userinfo_endpoint ベースURL + /ocs/v2.php/cloud/user?format=json
注意:以前は、ocs_endpoint URLに追加のパラメータがリストされていました(?format = xml)。これはもう必要ではありませんが、パラメータを設定しても問題は生じません。


上記のベースURLの例を考えると、例示的なtoken_endpoint URLはhttps://owncloud.example.com:8000/oc/index.php/apps/oauth2/api/v1/tokenです。発行者の概要に戻り、[ ユーザーフィールドマッピングの構成 ]をクリックします。以下のマッピングを入力してください。

外部フィールド名内部フィールド名
ocs-data-email Eメール
ocs-data-id ユーザー名

これで、ownCloudリポジトリの基本機能を使用するのに十分です。

オプション:アクセス制御リンクを使用したい場合は、システムアカウント接続する必要があります 。これは特定の人に属していない ownCloudアカウントでなければなりませ 。代わりに、それはMoodleによって所有されるべきです。まず、ownCloudでそのようなアカウントを作成するか、または独自の管理者に依頼してください。強く、理想的にはランダムなパスワードを選択し、あなたのMoodleの管理者ではない他の誰かにそれを与えないでください。その後、発行者の概要で、[ システムアカウント接続 ]をクリックします 。あなたがそのアカウントで ownCloudにログインしていることを確認し、Moodleを承認してください 。その後、発行者の概要に戻ります。このユーザー名を確認して、正しいアカウントに接続したことを確認できます。 (誤ってシステムアカウントを使用しないように、ブラウザで今すぐownCloudからログアウトしてください。)また、プラグインを使用した後でシステムアカウントを変更しないでください 。これにより、変更前に作成されたすべてのアクセス制御リンクが解除されます。

OAuth 2クライアントの設定に関する詳細は、OAuth 2に関するMoodleのドキュメントおよびOAuth 2に関する開発者向けのドキュメントをご覧ください。

リポジトリインスタンスを作成する

ownCloud発行者が設定されたので、これをリポジトリのインスタンスに関連付けることができます。リポジトリの設定に移動しますサイトの管理►プラグイン►リポジトリ►リポジトリの管理とownCloud リポジトリの 有効化( 有効および表示 )。特別なユーザー権限を求められたときは、チェックボックスをオンにしないでください。彼らはOAuth 2発行者を設定しないかもしれないので、これらの許可はそれほど役に立ちません。次に、ownCloudリポジトリの設定を開き、 [ リポジトリインスタンスの作成 ]をクリックします 。 Moodleユーザに表示される名前を入力し、設定された発行者を選択してください。選択ボックスの下のテキストは、どの発行者がこのリポジトリでの使用に適しているかを示します。発行者が表示されない場合は、発行者の設定を再確認してください。特にすべてのURL(ベースURLとエンドポイント)およびエンドポイントの名前。

発行者インスタンスの設定

また、アクセス制御リンクを開いたときにユーザーのプライベートファイルストレージに表示されるフォルダー名前を定義することもできます 。ownCloudで共有すると、常にファイルがユーザーに表示されるので、ここにそのファイルが入ります。彼らのドキュメントルートを乱雑にすることを避けるために。 サポートされているファイルを使用すると、リポジトリの使用を制限することができます。つまり、リンク(「外部」)のみまたはアップロード(「内部」)のみを許可することができますが、許可することもできます。無制限の使用法[ 内部]と[外部]が選択されている場合は、ユーザーに提示されるデフォルトの種類を定義できます。

その後、すべてが設定され、実行する準備が整いました。ユーザーにとってこれがどのように見えるかを見てみましょう。

使用法

リポジトリは、ファイルピッカーが使用されているすべての活動で利用できます。ただし、コース管理者はコース管理►リポジトリメニューで無効にすることができます。ファイルピッカーにはログインボタンが表示されます(ユーザーがまだ認証されていないと仮定します)。

ファイルピッカーログイン

ボタンがクリックされるとポップアップウィンドウまたは新しいタブが開かれ、ユーザーはownCloudインスタンスにログインしてMoodleからのアクセスを承認するように要求されます。許可が与えられると、利用可能なファイルの一覧表が表示されます。

ファイルピッカーの一覧

ここでユーザーはファイルを選択し、コンテンツをリロードしてログアウトすることができます。設定ボタンをクリックすると、新しいウィンドウでownCloud Webインターフェイスが開き、ファイルを簡単に管理できます。

アクセス制御リンク

学生は課題の中で「アクセス制御されたリンク」としてownCloud / Nextcloudからファイルを提出することができます。提出後、学生はそれらを変更できなくなりますが、教師はそれらを編集できます。

教師は、ownCloud / Nextcloudのファイルを「アクセス制御リンク」として表示することがあります。教師はファイルの更新を続けることができますが、学生はそれらを見ることしかできません。

この機能を有効にするには、次のことを確認してください。

  1. システムアカウントが、サイト管理のOAuth 2サービスに接続されています 。このアカウントは、学生や教師から提出されたファイルへのアクセスを所有および管理します。教師はファイルを編集できますが、学生は編集できません。これはこの目的のための専用アカウントであるべきです。
  2. 「サポートされているファイル」は「内部および外部」に設定されています。
  3. オプション: "デフォルトの返品タイプ"は "外部(Moodleに保存されているリンクのみ)"に設定されています。


Nextcloudの制限

2018年に、Nextcloudはすべての既知の制限を解決する一連の修正を作成し公開しました。それ以前は、Nextcloud(バージョン12まで)にはファイルリンクの使用を妨げる制限がありました。つまり、ファイルはNextcloudからMoodleにアップロードすることしかできませんでしたが、Nextcloudサーバがそれをブロックしてしまうため、代替手段、つまりファイルリンクを作成することはできませんでした。この問題に遭遇した場合は、必ず最新バージョンのNextcloudを使って作業していることを確認してください(間違いなく13.0.1より古いものではありません!)。 それでも解決しない場合は、下記の#トラブルシューティングのセクションを確認してください。

このプラグインのv3.5-r2にAccess Controlled Links( Google DriveリポジトリおよびOneDriveリポジトリプラグインの機能に似ている)が導入されたため、Nextcloudには新しい制限があります。あなたがあなたのNextcloudにアクセスすることをMoodleに許可する時はいつでも、あなたは同時にブラウザからログアウトします。アクセス制御リンクファイルにアクセスするには、まずMoodleを認証してから、ブラウザでNextcloudに再ログインする必要があります。それから、あなたはMoodleからファイルにアクセスすることができます。

トラブルシューティング

このプラグインをインストールして設定することはかなり技術的な努力です。2台のマシンを互いに話すことは非常に技術的な話題です。問題が発生した場合、根本的な原因を見つけるのは難しいかもしれません。それにもかかわらず、これまでのところ私たちはすべての問題を解決することができました、そして一旦プラグインが正しくインストールされて設定されれば、それは円滑かつ非常に安定して動きます。以下は、設定中に発生した問題とその進め方のヒントのリストです。

システムアカウントに接続できません。
システムアカウントがすべての個人用アカウントと異なることを確認してください。個人ではなく、Moodleに属するアカウントでなければなりません。発行者の設定を見てください。 [ HTTPヘッダを介したトークン要求の認証]チェックボックスを有効にする必要があります。
認証は成功したようですが、ファイルピッカーに「ファイルがありません」と表示されます。
あなたのownCloudをホストするApacheサーバは間違って設定されているかもしれません。あなたがMoodleでファイルを見ようとするならば、そのApacheログは同様に401エラーを示すかもしれません。この問題を解決する方法についてのアイデアを得るためにhttps://github.com/learnweb/moodle-repository_owncloud/issues/26#issuecomment-343521986に続くコメントを見てください。 または 、Nextcloud側でHTTPSが正しく設定されていない可能性があります。 Nextcloudサーバーには有効で信頼できる証明書が必要です。ブラウザとは異なり、手動で例外を定義することはできません。
ファイルのみをアップロードでき、ファイルへのリンクはできません。
Nextcloudを使っていますか?その場合は、Nextcloudをバージョン13.0.1以降にアップグレードしてください。それ以前は、Nextcloudはファイルのリンクを妨げる技術的な制限を受けていました。
Nextcloudのファイルにリンクすると、「ownCloudへの要求が失敗しました:無効な応答です」というメッセージが表示されます。
ocs_endpointに入力したURLをもう一度確認してください。 repository_owncloud v3.5-r1までは、URLの末尾に?format = xmlが指定されている必要がありました。
ownCloudでサインインした後、 "このリクエストは無効です。このエラーが解決しない場合、[あなたのMoodle名]の管理者に連絡してください。"というエラーが表示されます。
ownCloudに誤ったリダイレクトURIを入力した可能性があります 。最後に/admin/oauth2callback.phpがあること、そして認証を試みるときにMoodleがownCloudに送信しようとしているものと正確に一致することが重要です。
アクセス制御されたリンクにアクセスすると、私はMoodleを認証しますが、そのファイルを見ることができません。
14.0.1より前のNextcloudでは、あなたがMoodleを認証すると、あなたのNextcloudブラウザセッションは終了します。これはNextcloudの特別な制限です。ファイルにアクセスするにはブラウザに再ログインする必要があります。 Nextcloud 14.0.1から、この問題は解決されました。
プラグインをインストールしてシステムアカウントを接続したので、Moodleはとても遅いです
Nextcloudはややナイーブな総当たり攻撃保護を持っています。有効にすると、(MoodleプラグインがあなたのNextcloudを強引に強制することは絶対にありませんが!)いくつかのケースではいくつかのMoodleリクエストを遅くしますが、あなたはこれを変更できます。まず、Nextcloudへのリクエスト数が減るので、最新バージョンのリポジトリプラグインにアップデートします。次に、 Nextcloud"Brute-force settings"アプリをダウンロードしてください 。インストール後、あなたのMoodleサーバのIPをホワイトリストに追加してください。

あなたが別の問題を解決することができたならば、このリストに加えてください、これは他の人を大いに助けます!ありがとうございます。

了承

このプラグインはもともと2016/17にミュンスター大学で開催されたプロジェクトセミナーsciebo @ LearnwebでInformation Systemsの学生によって作成されました。彼らの素晴らしい作品のアーカイブ(!)については、彼らのgithubページを参照してください 。彼らはまた、ownCloud用のOAuth 2インターフェースを作成しましたHeise Security(ドイツ語語)に掲載)。そうでなければ、すべてこれが不可能だったでしょう。 Learnweb(University ofMünster)は2017年からMoodleプラグインをメンテナンスしています。