Hi,
zunaechst mal vielen Dank fuer die Info. Ich habe inzwischen auch schon mit
diesem IsInRole herumexperimentiert und mir passiert genau das gleiche wie
Dir. IsInRole liefert bei Uebergabe einer Gruppe immer false. Ich habe es
folgendermassen probiert:
AuthAdmin.Text = User.IsInRole("Administrator").ToString();
Ich habe auch versucht die Gruppe mit OU's zu vertauschen, das Ergebnis ist
allerdings dasselbe geblieben.
Gruss
Frank
-----Urspr�ngliche Nachricht-----
Von: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]Im Auftrag von Patrick
A. Lorenz
Gesendet: Montag, 15. Oktober 2001 20:51
An: aspDEdotnet
Betreff: [aspdedotnet] Re: Windows Authentication
Moin!
Ich habe mir die Sache noch einmal ein wenig genauer angesehen, weil es mich
selbst sehr interessiert. Entweder verstehe es nicht richtig, oder aber da
gibt es noch ein paar Bugs.
Der folgende Code beantwortet zumindest Deine Fragen. Es wird der Username,
als Beispiel die Zugehoerigkeit zur Admin-Gruppe sowie der volle Name
ausgegeben.
WindowsPrincipal Principal = (WindowsPrincipal) User;
WindowsIdentity Identity = (WindowsIdentity) User.Identity;
Response.Write("Name: " + Identity.Name + "<br>");
Response.Write("Admin? " +
Principal.IsInRole(WindowsBuiltInRole.Administrator) + "<br>");
DirectoryEntry DE = new DirectoryEntry("WinNT://" +
Identity.Name.Replace("\\","/"));
Response.Write("FullName: " + DE.Properties["FullName"][0] + "<br><br>");
foreach(string PN in DE.Properties.PropertyNames)
Response.Write(PN + "<br>");
foreach(DirectoryEntry objChildDE in DE.Children)
Console.WriteLine(objChildDE.Path);
Ein paar Punkte verstehe ich allerdings nicht ganz:
- IsInRole (sowohl GenericPrincipal als auch WindowsPrincipal) liefert mit
immer False, sobald ich den Namen einer Gruppe (inkl. Domain) uebergebe.
Verwende ich allerdings WindowsPrincipal und die WindowsBuiltInRole
Enumeration, klappt es wie am Schnuerchen.
- Nach meinem Verstaendnis muessten Informationen wie beispielsweise die
Liste aller Gruppen, denen der User zugeordnet ist, als Children (siehe
letzte foreach) ausgegeben werden. Aber es existieren keine untergeordneten
Objekte und auch eine Suche mit dem DirectorySearcher kann ich auf Basis des
Benutzers nicht durchfuehren ("nicht unterstuetzt").
Hat jemand eine gute Idee?
Patrick
> Moin!
> Das kannst Du mit ADS(I) machen. Die notwendigen Klassen findest Du im
> Namespace System.DirectoryServices. Wenn Du was gebastelt hast, wuerde
> mich das interessieren - kannst es ja mal in die Liste mailen :-)
> Viele Gruesse,
> Patrick
> *********
> Das erste deutsprachige Buch zur C# Beta 2,
> jetzt unter http://www.csharp-shortcut.de
> * Patrick A. Lorenz
> * Berliner Strasse 17b
> * 78467 Konstanz
> * http://www.p-l.de
> * mailto:[EMAIL PROTECTED]
>> Hallo,
>> ich moechte per Windows Authentication meine auf c# basierende
>> Webappliaktion vor unerlaubten Zugriffen schuetzen. Dazu moechte ich
>> sowohl
>> den Benutzernamen (zur persoenlichen Ansprache) als auch die
>> dazugehoerige
>> Windows-Rolle (Admin, Benutzer, Hauptbenutzer usw.) auslesen und mit
>> Hilfe
>> der Rolle einige Inhalte sperren und ggbfls auch anders darstellen. Im
>> IIS
>> habe ich Basic Authentication eingestellt. Mit dem nachfolgenden
>> Quellcode
>> gelingt es zwar den Benutzernamen und den Authentication Type auszulesen
>> allerdings habe ich keine Ahnung wie ich auslesen kann, ob es sich um
>> einen
>> Admin oder Benutzer kann. Kann mir da vielleicht bitte jemand
>> weiterhelfen.
>> <%@ Page language="c#" debug="True" %>
>> <% @ Import Namespace = System.Security.Principal %>
>> <% @ Import Namespace = System.Threading %>
>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
>> <html>
>> <script language="C#" runat=server>
>> void Page_Load(Object Src, EventArgs E )
>> {
>> AuthUser.Text = User.Identity.Name;
>> AuthType.Text = User.Identity.AuthenticationType;
>> AuthTrueFalse.Text = User.Identity.IsAuthenticated.ToString();
>> //AuthGuest.Text = StrGast;
>> }
>> </script>
>> <body>
>> <h3><font face="Verdana">Windows Authentication</font></h3>
>> <table Width="700" rules="all" bordercolor="Black"
>> style="background-color:#ccccff;bordercolor:black;font-family:Verdana;fon
>> t
>> -s
>> ize:8pt;border-collapse:collapse;">
>> <tr>
>> <td>Benutzer:</td>
>> <td><asp:label id=AuthUser runat=server/>
>> </tr>
>> <tr>
>> <td>Authentication Typ:</td>
>> <td><asp:label id=AuthType runat=server/>
>> </tr>
>> <tr>
>> <td>Authenticated:</td>
>> <td><asp:label id="AuthTrueFalse" runat=server/>
>> </tr>
>> <tr>
>> <td>Authentication Rolle:</td>
>> <td><asp:label id="AuthGuest" runat=server/>
>> </tr>
>> </table>
>> </body>
>> </html>
>> Vieln Dank im vorraus
>> Mit freundlichen Gruessen,
>> Frank Tichy
>> Web7
>> ____________________________________
>> Siller AG
>> Suedstrasse 90
>> 74072 Heilbronn
>> Tel.: +49 (0) 7131 / 9967-733
>> mailto:[EMAIL PROTECTED]
>> http://www.siller.de
>> http://www.palmandmore.de
>> Postadresse:
>> Wannenaeckerstrasse 43
>> 74078 Heilbronn
>> | [aspdedotnet] als [EMAIL PROTECTED] subscribed
>> | http://www.aspgerman.com/archiv/aspdedotnet/ = Listenarchiv
>> | Sie koennen sich unter folgender URL an- und abmelden:
>> | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedotnet.asp
> | [aspdedotnet] als [EMAIL PROTECTED] subscribed
> | http://www.aspgerman.com/archiv/aspdedotnet/ = Listenarchiv
> | Sie koennen sich unter folgender URL an- und abmelden:
> | http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedotnet.asp
| [aspdedotnet] als [EMAIL PROTECTED] subscribed
| http://www.aspgerman.com/archiv/aspdedotnet/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedotnet.asp
| [aspdedotnet] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedotnet/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedotnet.asp