web-dev-qa-db-ja.com

なぜ<deny users = "?" />次の例に含まれていますか?

?ワイルドカードは認証されていないユーザーを表し、*は、認証済みおよび未認証のすべてのユーザーを表します。私の本は、URL認証の次の例を示しています。

<authorization>
  <deny users="?" />
  <allow users="dan,matthew" />
  <deny users="*" />
</authorization>


ただし、上記のコードは次と同じ効果はありません。

<authorization>
  <allow users="dan,matthew" />
  <deny users="*" />
</authorization>

または、著者も<deny users="?" />理由のルール?

69
SourceC

ASP.NETは、優先事項として構成ファイルからのアクセスを許可します。潜在的な競合の場合、最初に発生した許可が優先されます。そう、

deny user="?" 

匿名ユーザーへのアクセスを拒否します。それから

allow users="dan,matthew" 

そのユーザーにアクセスを許可します。最後に、すべてのユーザーへのアクセスを拒否します。これは、ダン以外の全員が揺れ動き、マシューはアクセスを拒否されます。

追加するように編集されています。また、@ Deviantが指摘するように、最後のエントリにも認証されていないものが含まれるため、認証されていないものへのアクセスを拒否することは無意味です。このトピックについて説明しているブログエントリは、次の場所にあります。 Guru Sarkarのブログ

83
Cyberherbalist

「実行時に、認可モジュールは、特定のユーザーアカウントに適合する最初のアクセスルールを見つけるまで、最もローカルな構成ファイルから許可要素と拒否要素を繰り返し処理します。その後、認可モジュールは、最初に見つかったアクセスルールが許可ルールか拒否ルールかに応じてURLリソース。デフォルトの許可ルールはです。したがって、デフォルトでは、特に設定しない限りアクセスが許可されます。

[〜#〜] msdn [〜#〜] の記事

deny = * means deny everyone
deny = ? means deny unauthenticated users

最初の例では、deny *はdan、matthewに影響を与えません。これらは前のルールで既に許可されているためです。

ドキュメントによると、2つのルールセットに違いはありません。

38
Chad Grant

例1は、フォーム認証を使用するasp.netアプリケーション用です。ユーザーはセキュリティモジュールに対する認証になるまで認証されないため、これはインターネットアプリケーションの一般的な方法です。

例2は、Windows認証を使用するasp.netアプリケーション用です。 Windows認証では、Active Directoryを使用してユーザーを認証します。これにより、アプリケーションにアクセスできなくなります。この機能はイントラネットアプリケーションで使用します。

4

次の2つのリンクを参照してください:

認証の拒否要素(ASP.NET設定スキーマ)http://msdn.Microsoft.com/en-us/library/vstudio /8aeskccd%28v=vs.100%29.aspx

許可に要素を許可(ASP.NET設定スキーマ):http://msdn.Microsoft.com/en-us/library/ vstudio/acsd09b0%28v = vs.100%29.aspx

1
M.R