AccessControl+
はじめに
AccessControl+プラグインは、ブログに閲覧制限の機能を追加するプラグインです。
機能
- プラグインの設定を行い再構築することでブログに閲覧制限の機能を追加することができます。
- ビルドされる拡張子htm、html、phpのファイルにPHPで記述された閲覧制限コードが挿入されます。
- サインインしたユーザーの認証方式と権限がプラグインの設定に含まれた場合に閲覧が許可されます。
- mt-search.cgiならびにData API(MT6.xのみ)を利用した検索において閲覧可能なブログ/ウェブサイトのみの検索に制限されます。
- プラグインが提供するタグはPHPのコードに展開され、サインインしたユーザーに応じた動的な値を出力します。
- スタティックパブリッシング/ダイナミックパブリッシングの両方に対応します。
- (実験的機能)ブログ記事アーカイブ・ウェブページアーカイブに限定して個別に閲覧制限の有無を設定することが可能です。
対応バージョン
- Movable Type 5.2x
- Movable Type 6.x
動作条件
- Movable Type コミュニティ・ソリューション(Movable Typeに標準添付されています)
- スタティックパブリッシングのみを利用する場合でも、あらかじめダイナミックパブリッシングが動作する環境(PHP5.0以上)が必要となります。
- Movable Typeが出力する拡張子htm、html、phpのファイルが、PHPで処理されるようWebサーバーの設定を行っていただく必要があります。
このプラグインの利用、及び著作権や保証について
このプラグインの著作権は作者であるエムロジック株式会社 / M-Logic, Inc.が所有しています。著作権者の許可なく本プラグインを使用、改変、再配布することはできません。
インストール
本パッケージに含まれる「plugins」ディレクトリ内のディレクトリ「AccessControl」を、Movable Typeインストールディレクトリの「plugins」ディレクトリの下にコピーしてください。
次に、本パッケージに含まれる「mt-static/plugins」ディレクトリ内の「AccessControl」ディレクトリを、スタティック・ディレクトリ(環境設定ファイルmt-config.cgiにおいて「StaticWebPath」として指定したディレクトリ)の「plugins」ディレクトリの下にコピーしてください。
結果、次のような構成になります。
mt (Movable Type インストールディレクトリ)
`-- plugins
`-- AccessControl
|-- lib
| `-- AccessControl
| |-- L10N
| | |-- en_us.pm
| | `-- ja.pm
| |-- ContextHandlers.pm
| |-- L10N.pm
| `-- Plugin.pm
|-- php
| |-- accesscontrol.php
| |-- block.mtaccesscontrolifauthed.php
| |-- function.mtaccesscontrolsignouturl.php
| |-- function.mtaccesscontroluserpermission.php
| |-- init.accesscontrol.php
| `-- resource.mtml.php
|-- tmpl
| |-- blog_config_template.tmpl
| |-- downloader.tmpl
| |-- htaccess.tmpl
| |-- redirector.tmpl
| `-- system_config_template.tmpl
`-- mt-accesscontrol.pl
mt-static (スタティック・ディレクトリ)
`-- plugins
`-- AccessControl
`-- docs
|-- accesscontrol.html
`-- mtdocs.css
作業後、Movable Typeのプラグイン設定画面を表示し、プラグインの一覧に「AccessControl+」が表示されていることを確認してください。これでインストール完了です。
システム設定
プラグインが使用するテンプレートについて
ブログ/ウェブサイトのプラグイン設定画面より、当プラグインが用いるテンプレートを作成することが可能です。ブログの閲覧制限を使用する場合には、必ずテンプレートを作成し、インデックステンプレートのビルドを行いこれらのファイルを出力するようにしてください。
ファイルダウンロードの制限について
ウェブサーバーにApacheを使用している場合、mod_rewriteモジュールの機能を利用することで、閲覧制限されているブログ/ウェブサイトの画像やドキュメントなどファイルのダウンロードを制限することが可能です。
なお、Movable Type クラウド版、Movable Type for AWSにおいてはウェブサーバーはnginxですが、この機能をご利用いただけます。
インデックテンプレート「AccessControl htaccess」を編集することで、閲覧制限対象とするファイルのカスタマイズが可能です。
テンプレートの中でカスタマイズする部分は次の部分になります。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} !^(.*)\.(html|php|js)$ [NC]
RewriteRule ^.*$ [L]
制限をかけるファイルの種別(拡張子)を変更したい場合には、4行目の拡張子の指定を変更してください。
mod_rewriteモジュールの設定次第では、拡張子以外にも、特定のファイル名や特定のディレクトリ名で制限をかけたりなどの複雑な条件を設定することも可能です。詳しくはApacheならびにmod_rewriteモジュールのドキュメントを参照してください。
プラグインの設定(システム)
閲覧制限
システム全体の閲覧制限の切り替えを行います。
設定値
利用不可
システム全体の閲覧制限を行いません。
利用可能
システム全体で閲覧制限を行います。
デフォルト
利用不可
閲覧不可時に表示するURL
ユーザーが閲覧不可と判定された場合に表示するURLを指定します。
設定値
設定値
閲覧不可時に表示するURL
未入力時にはMovable Type標準のサインインページが使われます。デフォルト
未入力
権限
サインインにMT認証を利用した場合に、閲覧を可能とする権限を指定します。権限は複数指定することができます。
ここで指定した権限とユーザーの持つ権限に1つでも一致する権限があればアクセスが許可されます。設定値
閲覧を許可する権限を指定します。一般的な権限については「権限について」をご参照ください。
未入力時にはシステムに有効なアカウントがあればアクセスが許可されます。デフォルト
未入力
コンテンツタイプ
ダウンロードスクリプトを用いてブログ/ウェブサイト内のファイルを配信する際、ウェブブラウザに引き渡すMIMEタイプの設定を行います。
設定値
拡張子別のMIMEタイプを記述します。1つの拡張子ごとに1行で記述します。
[拡張子]:[MIMEタイプ]
該当しない拡張子のファイルは application/octet-stream として扱われます。デフォルト
未入力
権限確認方式
Movable Typeの環境変数SingleCommunityを有効にして運用している場合に、システムの権限だけでなくアクセスしようとしたブログの権限も確認するかの設定を行います。
SingleCommunityを有効にするとシステム共通のCookieを利用して認証が行われるようになりますので、システム共通の認証を行いつつ、ブログごとにユーザーに付与した権限に応じた閲覧制限を実施したい場合に使用します。設定値
チェックするとSingleCommunity有効時にシステム権限の他にアクセスしようとしたブログの権限も確認する機能が有効となります。デフォルト
無効(チェックなし)
プラグインの設定(ウェブサイト)
閲覧制限
ウェブサイトの閲覧制限の切り替えを行います。
設定値
システムプラグイン設定に従う
システムプラグイン設定に従います。
利用不可
このウェブサイトの閲覧制限を行いません。
利用可能
このウェブサイトの閲覧制限を行います。
個別
記事/ウェブページごとに閲覧制限を設定します。
デフォルト
システムプラグイン設定に従います。
リダイレクタスクリプト
Movable Typeによる認証後のリダイレクト先となるスクリプトのファイル名を指定します。
設定値
スクリプトのファイル名を指定します。ディレクトリ名は含めないようにしてください。デフォルト
acrd.php
サインアウト後に表示するURL
サインアウト後に表示するURLを指定します。
サインアウトはMTAccessControlSignOutURLタグが出力するURLを用いて行う必要があります。設定値
サインアウト後に表示するURL
未入力時にはウェブサイトのサイトURLが使用されますが、結果的にサインインページに遷移します。デフォルト
未入力
ダウンロードスクリプト
ファイルダウンロードを制限するスクリプトのファイル名を指定します。
設定値
スクリプトのファイル名を指定します。ディレクトリ名は含めないようにしてください。デフォルト
acdl.php
閲覧不可時に表示するURL
権限
コンテンツタイプ
権限確認方式
システムプラグイン設定での項目と同じ内容です。ウェブサイトの設定はこちらが優先されます。省略時にはシステムプラグイン設定の値が使用されます。
プラグインの設定(ブログ)
閲覧制限
ブログの閲覧制限の切り替えを行います。
設定値
ウェブサイトのプラグイン設定に従う
ウェブサイトのプラグイン設定に従います。利用不可
このブログの閲覧制限を行いません。利用可能
このブログの閲覧制限を行います。個別
記事/ウェブページごとに閲覧制限を設定します。デフォルト
ウェブサイトのプラグイン設定に従います。
リダイレクタスクリプト
閲覧不可時に表示するURL
サインアウト後に表示するURL
権限
権限確認方式
ダウンロードスクリプト
コンテンツタイプ
システム/ウェブサイトのプラグイン設定での項目と同じ内容です。ブログの設定はこちらが優先されます。省略時にはウェブサイトのプラグイン設定の値が使用されます。
タグの一覧
MTAccessControlSignOutURL
サインアウト処理を行うURLを出力するファンクションタグです。
MTAccessControlUserPermission
閲覧中のユーザーがMovable Type認証を利用した場合に、ユーザーの権限を出力するファンクションタグです。
複数の権限はカンマ区切りで出力されます。
Movable Type認証以外の認証方法を利用した場合には、何も出力しません。
MTAccessControlIfAuthed
閲覧中のユーザーが閲覧可能ユーザーである場合に処理を行うブロックタグです。このタグで囲まれた範囲は動的に処理されます。
MTAccessControlIfBlogAccessible
閲覧中のユーザーが指定されたウェブサイト/ブログを閲覧可能である場合に処理を行うブロックタグです。
なお、プラグイン設定において閲覧制限設定を「個別」としたウェブサイト/ブログについては個別記事の閲覧制限状況に関わらず閲覧可能として扱われます。
これらのタグは、閲覧制限が無効であった場合や閲覧制限の対象とならないファイルで利用した場合には、何も出力しません。
グローバルモディファイアの利用
AccessControl+プラグインが提供しているファンクションタグには、Movable Typeが標準で提供しているグローバルモディファイアを利用することができます。
利用できるグローバルモディファイアは次の通りです。
filters
trim_to
trim
ltrim
rtrim
decode_html
decode_xml
remove_html
dirify
sanitize
encode_html
encode_xml
encode_js
encode_php
encode_url
upper_case
lower_case
strip_linefeeds
space_pad
zero_pad
sprintf
動的なテンプレート処理
AccessControl+プラグインでは、MTAccessControlIfAuthed タグの内部のテンプレートを動的に処理することで、閲覧中のユーザーに固有の動的な出力を行うことが可能です。
テンプレートタグについては、ダイナミックパブリッシング対応のタグを使用してください。
スタティックパブリッシングでは、MTAccessControlIfAuthed タグの前後のテンプレートの処理状態(コンテキスト)が反映されませんのでご注意ください。
MTAccessControlIfAuthed タグ内部では「登録ユーザー」「アクセスしているブログ」に関連するタグを使用することができます
MTAccessControlIfAuthedタグを使用した例
ようこそ さん
あなたの最近のブログ記事
ブログ記事を公開していません
あなたの最近のウェブページ
ウェブページを公開していません
ようこそ ゲスト さん
MTAccessControlタグを使用した例
ウェブサイト一覧
注意事項
権限について
AccessControl+の設定で指定する権限は、認証方式と同じくMovable Type内部で利用されている形式で記述する必要があります。
Movable Type に標準で組み込まれている権限と、その記述方法は次の通りです。
メソッド | 閲覧制限有効時 | 個別モード時 |
---|---|---|
listByUser | 指定ユーザーが権限を保有するブログのリストではなく、閲覧可能なブログのリストを返します (変更検討中) |
|
get | 認証ユーザーがブログを表示できる場合データを返します 表示できない場合はエラー(403)になります |
データを返します(無効時と同等) |
メソッド | 閲覧制限有効時 | 個別モード時 |
---|---|---|
listByEntries | ||
list | ||
get |
メソッド | 閲覧制限有効時 | 個別モード時 |
---|---|---|
list | ||
get |
メソッド | 閲覧制限有効時 | 個別モード時 |
---|---|---|
listByEntries | ||
list | ||
get |
Data APIにおける制限事項
現状のData APIではauthenticationメソッドにおいて、コメントユーザーの認証を行うことができないため、コメントユーザーとしてAPIを利用することができません。
DData APIを用いた会員サービス等を構築される場合は、管理画面にログイン可能なユーザーを作成し「コメント投稿者」以外の権限を用いて構築するようにしてください。
Movable Typeクラウド版における制限事項
現状のMovable Type クラウド版では、このプラグインのダウンロード制限機能が正しく動作しません。
Movable Type for AWS における制限事項
現状のMovable Type for AWS nginx版では、このプラグインのダウンロード制限機能が正しく動作しません。
Movable Type for AWS Apache版をお使いください。
更新履歴
-
- Movable Type 6.3.3でのダイナミックパブリッシングの変更に対応した
- プラグインが使用するテンプレートを複数生成できてしまう問題の修正
- MTAccessControl/MTAccessControlIfAuthed タグでのダイナミックパブリッシングにおいてregex_replaceモディファイアが動作しなかった問題の修正
- MTAccessControl/MTAccessControlIfAuthed タグにstaticモディファイアを実装した
-
- Movable Type 6.3で採用されたSmarty3に対応した
- MTAccessControlタグ、MTAccessControlIfBlogAccessibleタグを追加した
-
- 検索制限の処理においてLDAP認証のユーザーの権限が扱われなかった問題の修正
- 検索制限の処理においてアクセス可能なブログが存在しない場合にエラーが発生していた問題の修正
- HTMLの拡張子としてshtmlもアクセス制限対象にするようにした
-
- コミュニティソリューションのトークンを用いた認証方式に対応し、これまでの認証方式を廃止した
- Movable Typeクラウド版などのmod_rewrite相当のリライト処理を持った環境にてダウンロード制限が動作するようにした
- MTAccessControlIfAuthedタグの動作を変更し、タグの範囲をダイナミックに処理するようにした
- Data APIに制限付きで対応した
-
- MT6.0に対応した
- PluginPathを別途指定している環境においてphpファイルのパスを間違えてしまう問題の修正
-
- なりすましを可能とする脆弱性の修正
(本バージョンの適用によりMovable Type本体の脆弱性を修正するものではありません) - LDAP認証で認証が失敗する問題の修正
- 不要なエラーログを出力する問題の修正
- MT4.3に対応した
- なりすましを可能とする脆弱性の修正
-
- MT5.1に対応した
- 個別モード時にウェブページの閲覧制限が動作しない問題の修正
- MT4.2xのダイナミックパブリッシングでの使用時にエラーが発生する問題の修正
-
- 権限確認方式を設定できるようにした
- 実験的な機能として個別モードを追加
- 個別モード時に利用できるMTAccessControlIfAuthedタグの提供
- 最初のリリース