none
IIS 7 unterschiedliche URL-Authorisierungsregeln für unterschiedliche Applications RRS feed

  • Frage

  • Hi Leute,

    ich brauche eure Hilfe.

    ich habe eine Anwendung die im IIS unter "Default web site" mehrere "Applications" angelegt hat.

    Nun such ich eine Möglichkeit, diese auch separat zu Berechtigen.

    Heisst auf

    /application1 soll nur GrupeX zugreifen können 

    /application2 nur GruppeY und so weiter...

     

    Hab auch schon versucht das über URL-Authorisierungsregeln zu machen, aber sobald ich diese für eine Application vornehme übernehmen das die anderen(alle die sich ebenfalls unter default web site befinden) gleich mit.

     

    hat jemand ne Idee?

     

    thx

    Micha

    Freitag, 7. Januar 2011 13:41

Alle Antworten

  • Hallo Micha,
    ich habe eine Anwendung die im IIS unter "Default web site" mehrere "Applications" angelegt hat.

    Nun such ich eine Möglichkeit, diese auch separat zu Berechtigen.

    Heisst auf

    /application1 soll nur GrupeX zugreifen können 

    /application2 nur GruppeY und so weiter...

    sicher, dass es wirklich eigene Anwendungen sind und nicht nur Unterordner/virtuelle Ordner?

    Was ist GruppeX, GruppeY, ...? Windows Benutzergruppen? Falls ja, schau mal hier:

      http://msdn.microsoft.com/en-us/library/ff647405.aspx

      http://forums.iis.net/p/1156362/1898307.aspx

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 7. Januar 2011 16:31
    Moderator

  • Hallo Stefan,

     

    Falls ja, schau mal hier:

      http://msdn.microsoft.com/en-us/library/ff647405.aspx

      http://forums.iis.net/p/1156362/1898307.aspx


    Danke schonmal für die Tipps.

    Habe tatsächlich was nützliches gefunden.

     

    Zu Deinen Fragen

    sicher, dass es wirklich eigene Anwendungen sind und nicht nur Unterordner/virtuelle Ordner?

    Ja bin ich mir sicher, dass sehe ich an dem Icon. hab zwar auch Verzeichnisse unter "Default web Site" aber die meine ich nicht.

    Was ist GruppeX, GruppeY, ...? Windows Benutzergruppen?

    ja sind es.

     

    ich bin nicht sicher ob mein Problem so richtig verstanden wurde.

    Hab auch schon versucht das über URL-Authorisierungsregeln zu machen, aber sobald ich diese für eine Application vornehme übernehmen das die anderen(alle die sich ebenfalls unter default web site befinden) gleich mit.

    Ich habe auf dem IIS Server "IISSRV0001" unter "Default Web Site" mehrere Applications "App1", "App2". Sodass ich über den Link http://IISSRV0001/App1 oder http://IISSRV0001/App2 diese aufrufen kann.

    Diese Applications sind unterschiedlich konfiguriert, aus diesem Grund sollte die Gruppe "GruppeX" nur auf ttp://IISSRV0001/App1 und "GruppeY" auf ttp://IISSRV0001/App2 zugreifen können.

    Das Ganze habe ich wie oben erwähnt über URL Authorization lösen wollen. Aber sobald ich im IIS manager die "Authorization Rules"  zB für die App1 vornehme,

    übernimmt App2 die Regel automatisch mit. (Das ist mein Problem).

     

    Der Grund dafür ist wohl, dass die Regeln in eine Web.config geschrieben werden die in dem hierarchischen Konfigurationsschema von IIS, in

    einem Ordner im Filesystem über den Application Ordnern liegt

    -> demzufolge auch auf alle unterverzeichnisse (Application Verzeichnisse) wirkt.

    Nachzulesen hier:

    http://openbook.galileocomputing.de/asp/asp140002.htm

     

    Auf der gleichen Seite  wird auch beschrieben wie man eine "Web.config" erstellt und diese direkt im Application Verzeichnis hinterlegen kann,

    damit wirken die dort gemachten Einstellungen nur auf die jeweilige Application.

    Soweit sogut.

     

    nun Habe ich eine Web.config Datei angelegt:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
     <location path="App1">
        <system.web>
            <security>
                <authorization>
                    <remove users="*" roles="" verbs="" />
                    <add accessType="Allow" roles="GruppeX" />
                </authorization>
            </security>
      </system.web>
     </location>
    </configuration>

     

    Diese scheint aber nicht zu greifen, sodass ich beim Zugriff nach den Anmeldedaten gefragt werde und letztendlich 401.2 Unauthorized error kommt.

     

    verstehe momentan leider nicht was ich falsch gemacht hab.

     

    evtl. weiss jemand einen Rat.

    thx
    Montag, 10. Januar 2011 15:20
  • Hallo Micha,

    nun Habe ich eine Web.config Datei angelegt:

    ...
                    <add accessType="Allow" roles="GruppeX" />
    ...

    Diese scheint aber nicht zu greifen, sodass ich beim Zugriff nach den Anmeldedaten gefragt werde und letztendlich 401.2 Unauthorized error kommt.

    "GruppeX" ist im Format Domäne\Gruppe? Falls nicht, mach das mal. Wenn es keine Domäne gibt, kommt dann anstelle von "Domäne" normalerweise der Name des Rechners hin.

    Gibt es im Ordner App1, App2, ... eigene web.config Dateien, die die Einstellungen ggfs. übersteuern?

    http://learn.iis.net/page.aspx/142/understanding-iis-70-url-authorization/ kennst Du schon?

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Montag, 10. Januar 2011 19:10
    Moderator
  • Hi Stefan,

    http://learn.iis.net/page.aspx/142/understanding-iis-70-url-authorization/ kennst Du schon?

    Die Links sind alle super, die kenn ich. Aber trotzdem Danke.

     

    "GruppeX" ist im Format Domäne\Gruppe? Falls nicht, mach das mal.

    Das Format "Domäne\Gruppe?" ist hierbei nicht zwingend erforderlich es geht auch ohne.

     

    Gibt es im Ordner App1, App2, ... eigene web.config Dateien, die die Einstellungen ggfs. übersteuern?

    Das war ja meine Idee. Desswegen habe ich testweise im Ordner der "App1" eine Web.config Datei erstellt.

    Diese scheint aber nicht zu greifen, auch mit Procmon konnte ich keinen Zugriff auf die Datei feststellen.

     

    Desswegen habe ich zuletzt die Web.Config Datei (eine "Ebene" höher) bearbeitet.

    Hierbei kann man eine Sektion nach dem Muster erstellen:

     

     <location path="App1">
            <system.webServer>
                <security>
                    <authorization>
                        <remove users="" roles="" verbs="" />
                        <add accessType="Allow" Roles="Gruppe?" />                  

                    </authorization>
                </security>
            </system.webServer>
        </location>
    </configuration>

    Die ganze Formatierung der Sektionen im Web.config scheint bis auf  <location path="App?"> zu funktionieren.

    Sprich wenn ich statt "<location path="App?">" "<location path="Deafult.aspx">" eintrage, funktioniert es Wunderbar.

    Da aber die Applikationen wohl alle einen gemeinsamen physikallischen Pfad nutzen, greift diese Einstellung ebenfalls auf alle Applikationen ;-(.

     

    ist es eigentlich normal dass hierbei alle Applikationen einen gemeinsamen physikalischen Pfad nutzen?

    Denn das scheint wohl hierbei das Problem zu sein.

     

    Im IIS 6 konnte man noch sagen welche Default.asp seite für die jeweilige Applikation genutz werden soll,

    was mir bei meinem Problem auch schon reichen und helfen würde. Finde aber keine Möglichkeit das im IIS 7 zu tun.

     

    Ich könnte ja versuchen für jede Applikation einen eigenen Ordner anzulegen und den Inhalt des aktuallen Ordners dahin kopieren,

    aber weiss nicht ob es sinnig ist und ob ich damit später Probleme kriege

     

    thx

     

     

    Dienstag, 11. Januar 2011 12:35
  • Hallo,

    Das Format "Domäne\Gruppe?" ist hierbei nicht zwingend erforderlich es geht auch ohne.

    ich kenne es nicht anders und würde es (auch aus Übersichtlichkeitsgründen) trotzdem so machen.

    Da aber die Applikationen wohl alle einen gemeinsamen physikallischen Pfad nutzen, greift diese Einstellung ebenfalls auf alle Applikationen ;-(.

    Das ist eine Information, die wichtig gewesen wäre. Die web.config steht ja im Ordner selbst. Wenn Du also für App1 etwas machst und dann für App2 wird das mindestens zusammengeführt oder gar überschrieben.

    ist es eigentlich normal dass hierbei alle Applikationen einen gemeinsamen physikalischen Pfad nutzen?

    Denn das scheint wohl hierbei das Problem zu sein.

    Normal ist relativ. Wenn Du es so brauchst, ist dagegen nichts einzuwenden. Die Frage ist nur, warum? Wenn die Anwendung eh dieselbe ist, macht es eigentlich wenig Sinn. Es sei denn, Du unterscheidest innerhalb der Anwendung dann nochmal If Folder = "App1" Then ...

    Im IIS 6 konnte man noch sagen welche Default.asp seite für die jeweilige Applikation genutz werden soll,

    was mir bei meinem Problem auch schon reichen und helfen würde. Finde aber keine Möglichkeit das im IIS 7 zu tun.

    Es kann pro Ordner nur eine Default.asp geben. Da kannst Du keine auswählen.

    Oder meinst Du vielleicht das Standarddokument? Das kannst Du auch per IIS MMC machen (Anwendung -> Standarddokument bzw. Default Document)

    Aber auch hier gibts dann wahrscheinlich das Problem, dass der Ordner selbst derselbe ist. Ob das daher dann nicht vom IIS überschrieben wird, ...

    Ich könnte ja versuchen für jede Applikation einen eigenen Ordner anzulegen und den Inhalt des aktuallen Ordners dahin kopieren, aber weiss nicht ob es sinnig ist und ob ich damit später Probleme kriege

    Wenn es nur zwei sind, wäre es noch ziemlich egal. Wenn Du da aber doch viel mehr Anwendungen mit dem gleichen Basisordner anlegen willst, wäre es bei Aktualisierungen zeitraubend und ggfs. auch mit Problemen behaftet.

    Aber erklär doch mal bitte, warum Du das überhaupt so machen willst?

    Zu der Sache mit mehrereren Anwendung mit gleichem Basisordner und web.config melde ich mich später nochmal. Das muss ich selbst erst mal ausprobieren :)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 11. Januar 2011 14:01
    Moderator
  • Hi Stefan,


    Es kann pro Ordner nur eine Default.asp geben. Da kannst Du keine auswählen.

    Oder meinst Du vielleicht das Standarddokument? Das kannst Du auch per IIS MMC machen (Anwendung -> Standarddokument bzw. Default Document)

    Aber auch hier gibts dann wahrscheinlich das Problem, dass der Ordner selbst derselbe ist. Ob das daher dann nicht vom IIS überschrieben wird, ...

    ich habe die selben Applikationen (nach dem gleichen Schema -> 1 Basisordner für alle Apps) noch auf dem alten IIS 6 und da habe ich seinerzeit für jede Applikation ein eigenes asp Dokument angelegt "App1.asp", "App2.asp" usw. diese habe ich über die NTFS Berechtigung für die jeweiligen Gruppen konfiguriert.

    Im IIS 6 konte ich über Applikation -> Eigenschaften -> Dokumente -> "Standardinhaltsseite aktivieren"  -> hinzufügen für jede Applikation ein eigenes asp Dokument hinterlegen.

     

    Wenn ich das, wie du schon erwähnt hast, im IIS 7 über Application -> "Default Document" -> hinzufügen einfüge übernehmen das auch andere Applikationen mit. Sprich das verhalten hierbei unterscheidet sich im gegensatz zu IIS 7.

     

    Wenn es nur zwei sind, wäre es noch ziemlich egal. Wenn Du da aber doch viel mehr Anwendungen mit dem gleichen Basisordner anlegen willst, wäre es bei Aktualisierungen zeitraubend und ggfs. auch mit Problemen behaftet.

    Aber erklär doch mal bitte, warum Du das überhaupt so machen willst?

    Naja ich finde die Lösung im Moment nicht schön, aber dann könnte ich wenigstens für jeden Ordner eine eigene web.config machen oder NTFS Rechte vergeben.

    Ich habe aber gleichzeitig die Angst dass ich später dafür zu viel verwaltungsaufwand betreiben muss und das ist nicht der Sinn der Sache.

     

    Mittwoch, 12. Januar 2011 09:00