2010-11-30 4 views
3

私は現在のユーザーが属するすべてのActive Directoryグループを表示するアプリケーションを持っています。私の設定を次のように設定した場合:いつASP.NET認証が行われますか?

<authentication mode="Windows"/> 
    <authorization> 
     <deny users="?"/> 
     <allow users="*"/> 
    </authorization> 

これは問題なく動作します。このようなとき:

<authentication mode="Windows"/> 
    <authorization> 
     <!--<deny users="?"/>--> 
     <allow users="*"/> 
    </authorization> 

グループが見つかりませんでした。なぜこれが違いになるのですか? asp.netは、認証されていないユーザーへのアクセスを特に拒否している場合のみ認証しますか?

これは私がグループを取得していますどのようにあるのに役立ちます場合:私は間違っている可能性があり

protected string GetUserGroups() 
    { 
     StringBuilder userGroups = new StringBuilder(); 
     ArrayList groupMembers = new ArrayList(); 
     DirectoryEntry root = new DirectoryEntry("LDAP://myldap/DC=nc,DC=local"); 
     DirectorySearcher ds = new DirectorySearcher(root); 
     ds.Filter = String.Format("(&(samaccountname={0})(objectClass=person))", User.Identity.Name.Substring(User.Identity.Name.LastIndexOf(@"\") + 1)); 
     ds.PropertiesToLoad.Add("memberof"); 
     try 
     { 
      foreach (SearchResult sr in ds.FindAll()) 
      { 
       foreach (string str in sr.Properties["memberof"]) 
       { 
        string str2 = str.Substring(str.IndexOf("=") + 1, str.IndexOf(",") - str.IndexOf("=") - 1); 
        groupMembers.Add(str2); 
       } 
      } 
     } 
     catch 
     { 
      //ignore if any properties found in AD 
     } 
     return String.Join("|", (string[])groupMembers.ToArray(typeof(string))); 
    } 
+1

私は確認も拒否もできませんが、認証が不要な場合にユーザーを認証しないようにするのは妥当な最適化のようです。 – Lazarus

+0

User.Identity.Nameに失敗した場合、値がありますか? – Zachary

+0

匿名アクセスを許可する場合、Asp.netは認証を要求しません。 本当に、なぜ他のユーザーが私のユーザー名を送信しなければならないのですか?彼は私よりも優れていますか? global.asaxのイベントにブレークポイントを設定して、これを保証することができます。 – vorrtex

答えて

3

が、私は、これはそれがどのように動作するかであると考えている:

ブラウザがサイトを打つ初めてそれは匿名でそうする。

サーバーで匿名が許可されていないと表示された場合、ブラウザはユーザーのWindows資格情報を送信します。

これらの資格情報が合格者に合格しない場合、ブラウザはログインボックスをポップアップするか、(アプリケーションに応じて)ログインページにそれらを送信します。

あなたのサイトでは匿名が許可されているため、すべてのユーザーがそのようになります。

+0

ブラウザにユーザーのウィンドウクレデンシャルを送信させることができるかどうか知っていますか? –

+1

@Abe:IIS設定で匿名アクセスを無効にします。 IISマネージャーを使用してください。認証の下にある必要があります(IIS 7)。 「匿名認証」を無効にして、ログインチャレンジを発行する「基本認証」を有効にしてください。 IEは最初のテストのためにこれらの資格情報を自動的に送信します。他のブラウザについてはわかりません。 – NotMe

+0

恐ろしい、私はそれをチェックします。 –

関連する問題