私は現在のユーザーが属するすべての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)));
}
私は確認も拒否もできませんが、認証が不要な場合にユーザーを認証しないようにするのは妥当な最適化のようです。 – Lazarus
User.Identity.Nameに失敗した場合、値がありますか? – Zachary
匿名アクセスを許可する場合、Asp.netは認証を要求しません。 本当に、なぜ他のユーザーが私のユーザー名を送信しなければならないのですか?彼は私よりも優れていますか? global.asaxのイベントにブレークポイントを設定して、これを保証することができます。 – vorrtex