SSブログ

たぶん難しくないApache2・初期設定編その3の補足1~「関係者」の範囲を詳しく~ [Linux(Apache)]

 さて。前のアーティクルで「Satisfy」ディレクティブについてさらりと紹介したが、詳しい内容を割愛したので、ここで解説を加えておく。

 このディレクティブは、Allowディレクティブ(とセットに使われるDenyやOrderディレクティブなども含まれる)で指定されるアクセス許可の範囲と、Requireディレクティブで指定されるアクセス許可の範囲との組み合わせ方について指定するディレクティブとなっている。

 たとえば。
ケース1:
 重要な情報なので、他部門からのアクセスは厳禁。社外からのアクセスももってのほか!社内のネットワーク、しかも自部門のIPアドレスからアクセスを許容するが、その中でも特に認証が通った利用者だけアクセス可能に!

 この場合は、
 if ( アクセス元は自部門のネットワークか? ){
  /* アドレスOK */
  if ( 認証が通ったか? ) {
    /* 認証OK */
    アクセスが許可される
  } else {
    /* 認証NG */
    ダメです!
  }
 } else {
  /* アドレスNG */
  ダメです!
 }

 とまあ、こんな感じのフローになるだろう。要するに、アドレスのチェックと認証のチェックが両方同時に満たされる必要がある場合。(AND条件)このようなケースでは、以下のような記述が必要となる。
Order Deny,Allow
Deny from All
Allow from (許可したいネットワーク)
Require (認証を通すユーザー)
Satisfy All

 「Satisfy All」の指定によって、ネットワーク的な条件と認証の条件と両方を満たさなければアクセスできないコンテンツが出来上がる。

 一方で…

ケース2:
 重要な条件なので、認証された人にしか見せないようにしたい。ただし、自部門のネットワークからアクセスしてきた人には認証を省略して見せるようにしたい。(だって…面倒くさいとかブーブー文句言われるんだもの…)みたいなケース。

 このような場合は、AllowとDenyで制御される範囲からは認証無しで。その他のネットワークからは認証された人だけアクセスできるようにしたい…ということになる。

Order Deny,Allow
Deny from All
Allow from (許可したいネットワーク)
Require (認証を通すユーザー)
Satisfy Any

 今度はこのように、「Satisfy Any」と記述する。こうすると、ネットワークの条件をみたすまたは認証が通るアクセスについてはコンテンツへのアクセスが許可されるようになる。(今度はOR条件)

 なお、前アーティクルでは特に「Satirfy」ディレクティブは使用していないが、このような場合デフォルトでは「Satisfy All」が指定されているものとみなされる。前アーティクルの場合は、

 ネットワークはどこからでも良い なおかつ 認証が通った場合

 という条件でアクセスが許可されている。ネットワーク的な条件は無いに等しいので、認証が通るか通らないかだけでアクセス制御が行われているということになる。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。