none
Zugriff auf web.config RRS feed

  • Frage

  • Hi,
     
    In einem Eventhandler wird mittels ConfigurationManager auf die
    Web.config zugegriffen. Dies funktioniert allerdings nicht für alle
    Benutzer, sondern nur wenn sich einmal ein Admin angemeldet hat.
    Anschließend funktionieren alle weiteren Zugriffe ohne Probleme.
     
    Das Problem ist soweit logisch - nur der Admin hat zugriff auf die
    web.config alle anderen nicht. Da nur beim ersten Zugriff physisch auf
    die web.config zugegriffen wird funktionieren alle weiteren Zugriffe
    auch von anderen Benutzern - solange bis der App-Pool recycled wird.
     
    Frage: wie gestalte ich den Zugriff, damit auch andere, nicht-Admins
    "als erste" zugreifen dürfen?
     
    --
     
    Henning Eiben
     
    busitec GmbH
    Consultant
     
     
    Rudolf-Diesel-Straße 59
    48157 Münster
    www.busitec.de
      
    Sitz der Gesellschaft: Münster
    HR B 55 75 - Amtsgericht Münster
    USt-IdNr. DE 204607833 - St.Nr. 336/5704/1277
    Geschäftsführer: Henning Eiben, Martin Saalmann, Simon Schwingel
     
     
    Dienstag, 25. Januar 2011 09:28

Antworten

  • On 03.02.2011 10:44, Andrei Talmaciu wrote:
    >
    > In meiner Testumgebung (und deren meiner Kollegen) genau anders rum
    > (Server 2008 R2 Enterprise + SharePoint Server 2010). Für alle
    > web.config Dateien (genauer gesagt für alle von SharePoint
    > angelegten IIS Sites) erhält Jeder Leserechte. Ich konnte leider keine
    > Dokumentation zu den standardmäßigen IIS-Rechte die SharePoint anlegt
    > finden.
    >
    > Konntest Du inzwischen die Ursache bestätigen? Falls ja, können wir
    > den Thread somit schließen?
    >
    Ich habe das nun so gelöst, dass ich mit einer Singleton-Instance auf
    die Web-Config zugreife und dafür dann einmalig elevate.
     
    --
     
    Henning Eiben
     
    busitec GmbH
    Consultant
     
     
    Rudolf-Diesel-Straße 59
    48157 Münster
    www.busitec.de
      
    Sitz der Gesellschaft: Münster
    HR B 55 75 - Amtsgericht Münster
    USt-IdNr. DE 204607833 - St.Nr. 336/5704/1277
    Geschäftsführer: Henning Eiben, Martin Saalmann, Simon Schwingel
     
     
    Montag, 7. Februar 2011 15:10

Alle Antworten

  • Hallo Henning

    wäre es möglich/für die Funktionalität anwendbar den ConfigurationManager Code mit erweiterten Rechten auszuführen?

    http://msdn.microsoft.com/de-de/library/aa543467.aspx

    Gruß
    Andrei

    Dienstag, 25. Januar 2011 13:02
  • On 25.01.2011 14:02, Andrei Talmaciu wrote:
    >
    > wäre es möglich/für die Funktionalität anwendbar den
    > ConfigurationManager Code mit erweiterten Rechten auszuführen?
    >
    >
     
    Daran habe ich auch schon gedacht. Aber wenn ich alle
    ConfigurationManager-Aufrufe in ein RunWithElevatedPrivileges wickel,
    dann bekomme ich ja recht viele Context-Wechsel. Eigentlich muss ja nur
    innerhalb des ConfigurationManager der einmalige Zugriff auf die
    web.config elevated erfolgen.
     
    --
     
    Henning Eiben
     
    busitec GmbH
    Consultant
     
     
    Rudolf-Diesel-Straße 59
    48157 Münster
    www.busitec.de
      
    Sitz der Gesellschaft: Münster
    HR B 55 75 - Amtsgericht Münster
    USt-IdNr. DE 204607833 - St.Nr. 336/5704/1277
    Geschäftsführer: Henning Eiben, Martin Saalmann, Simon Schwingel
     
     
    Dienstag, 25. Januar 2011 13:07
  • Wofür wird den die Web.config genau benutzt? Für Anwendungseinstellungen?

    Ich frage, da es auch andere Plätze gibt in dem man solche Einstellungen speichern könnte wobei auch normale User Zugriff erhalten. Ich habe z.B. mit SPWeb.Properties gearbeitet und der User konnte auf die darin enthaltenen Werte zugreifen.

    Evtl. hilfreich: http://www.wictorwilen.se/Post/Six-ways-to-store-settings-in-SharePoint.aspx

    Hilft das?

    Gruß
    Andrei

    Mittwoch, 26. Januar 2011 11:53
  • On 26.01.2011 12:53, Andrei Talmaciu wrote:

    Wofür wird den die Web.config genau benutzt? Für Anwendungseinstellungen?

    Ich frage, da es auch andere Plätze gibt in dem man solche Einstellungen speichern könnte wobei auch normale User Zugriff erhalten. Ich habe z.B. mit SPWeb.Properties gearbeitet und der User konnte auf die darin enthaltenen Werte zugreifen.

    Evtl. hilfreich: http://www.wictorwilen.se/Post/Six-ways-to-store-settings-in-SharePoint.aspx


    Die Frage ist berechtigt. In der Tat verwende ich in dem Projekt auch mehrere Speicherorte. Die web.config enthält dabei Default-Werte, die bei der Installation geschrieben werden (das ist in meinem aktuelle Projekt "legacy"-Code von einem anderen Entwickler, den ich nicht anpassen kann/will). Alle Werte können aber auch durch eine SharePoint-Liste übersteuert werden. Wenn allerdings für eine Einstellung kein Eintrag in der Liste gefunden wird, dann wird ein Zugriff auf die Web.config gemacht (und wenn da nix drin steht wird ein fest im Code hinterlegter Wert genommen).

    -- 
    
    Henning Eiben
    
    busitec GmbH
    Consultant
    
    
    Rudolf-Diesel-Straße 59
    48157 Münster
    www.busitec.de
      
    Sitz der Gesellschaft: Münster
    HR B 55 75 - Amtsgericht Münster
    USt-IdNr. DE 204607833 - St.Nr. 336/5704/1277
    Geschäftsführer: Henning Eiben, Martin Saalmann, Simon Schwingel
    
    Mittwoch, 26. Januar 2011 12:29
  • ok. Ich habe testhalber ein WebPart aufgestellt der einen Standardwert aus der web.config aufruft.

    Label1.Text = ConfigurationManager.AppSettings["FeedCacheTime"];
    

    Nach einem iisreset, mit einem herkömlichen User (Member der AD Domain Users Gruppe und der SharePoint Members Gruppe) darauf zugegriffen und den Wert angezeigt bekommen. Daher würde es sich also nicht als Standardverhalten einstuffen lassen.

    Wäre interessenat zu erfahren was im ULS Log zum Zeitpunkt des Aufrufs protokolliert wird. Evtl. kommen wir der Ursache auf diese Art näher.

    Mittwoch, 26. Januar 2011 13:33
  • Hallo Henning

    bist Du hier weitergekommen?

    Gruß
    Andrei

    Montag, 31. Januar 2011 13:50
  • On 26.01.2011 14:33, Andrei Talmaciu wrote:

    ok. Ich habe testhalber ein WebPart aufgestellt der einen Standardwert aus der web.config aufruft.

    Label1.Text = ConfigurationManager.AppSettings["FeedCacheTime"];
    

    Nach einem iisreset, mit einem herkömlichen User (Member der AD Domain Users Gruppe und der SharePoint Members Gruppe) darauf zugegriffen und den Wert angezeigt bekommen. Daher würde es sich also nicht als Standardverhalten einstuffen lassen.

    Wäre interessenat zu erfahren was im ULS Log zum Zeitpunkt des Aufrufs protokolliert wird. Evtl. kommen wir der Ursache auf diese Art näher.

    Also:
    --- cut ---
    Application error when access /_layouts/foo/MyCustomDispForm.aspx, Error=Access to the path 'C:\inetpub\wwwroot\wss\VirtualDirectories\6003\web.config' is denied. 
     at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)   
     at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)   
     at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)   
     at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)   
     at System.Configuration.Internal.InternalConfigHost.StaticOpenStreamForRead(String streamName)   
     at System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.OpenStreamForRead(String streamName, Boolean assertPermissions)   
     at System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.OpenStreamForRead(String streamName)   
     at System.Configuration.Internal.DelegatingConfigHost.OpenStreamForRead(String streamName)   
     at System.Configuration.UpdateConfigHost.OpenStreamForRead(String streamName)   
     at System.Configuration.BaseConfigurationRecord.InitConfigFromFile()
    --- cut ---

    hmm, und nun?

    -- 
    
    Henning Eiben
    
    busitec GmbH
    Consultant
    
    
    Rudolf-Diesel-Straße 59
    48157 Münster
    www.busitec.de
      
    Sitz der Gesellschaft: Münster
    HR B 55 75 - Amtsgericht Münster
    USt-IdNr. DE 204607833 - St.Nr. 336/5704/1277
    Geschäftsführer: Henning Eiben, Martin Saalmann, Simon Schwingel
    
    Mittwoch, 2. Februar 2011 16:56
  • --- cut ---
    Application error when access /_layouts/foo/MyCustomDispForm.aspx, Error=Access to the path 'C:\inetpub\wwwroot\wss\VirtualDirectories\6003\web.config' is denied. 
     at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)   
     at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)   
     at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)   
     at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)   
     at System.Configuration.Internal.InternalConfigHost.StaticOpenStreamForRead(String streamName)   
     at System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.OpenStreamForRead(String streamName, Boolean assertPermissions)   
     at System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.OpenStreamForRead(String streamName)   
     at System.Configuration.Internal.DelegatingConfigHost.OpenStreamForRead(String streamName)   
     at System.Configuration.UpdateConfigHost.OpenStreamForRead(String streamName)   
     at System.Configuration.BaseConfigurationRecord.InitConfigFromFile()
    --- cut ---

    wir wissen jetzt dass es sich um eine NTFS Berechtigungsproblem handelt. Wie sehen Dateiberechtigungen für die web.config aus? Standardmäßig sollte jeder über Read Rechte verfügen.

    Letztendlich könnte ein Procmon Trace den Benutzer und die angefordeten Rechte/Operation für die web.config Datei ins Licht bringen.

    Gruß
    Andrei

    Donnerstag, 3. Februar 2011 07:32
  • On 03.02.2011 08:32, Andrei Talmaciu wrote:

    wir wissen jetzt dass es sich um eine NTFS Berechtigungsproblem handelt. Wie sehen Dateiberechtigungen für die web.config aus? Standardmäßig sollte jeder über Read Rechte verfügen.

    Letztendlich könnte ein Procmon Trace den Benutzer und die angefordeten Rechte/Operation für die web.config Datei ins Licht bringen.


    Das mit dem NTFS hatte ich die ganze Zeit schon in verdacht. Ist es denn wirklich so, dass wenn ich einen neuen Server mit SharePoint installiere, dass dann wirklich "Jeder" lesenden Zugriff auf die web.config hat? Auf meiner Maschine haben nur System, WSS_ADMIN_WPG und WSS_WPG sowie die lokale Administratoren-Gruppe Zugriff auf die Datei. Und ich kann mich nicht erinnern, dass ich da etwas besonderes eingestellt hatte. Somit würde ich sagen, haben Default-mäßig normale Benutzer keinen Zugriff auf die web.config.

    -- 
    
    Henning Eiben
    
    busitec GmbH
    Consultant
    
    
    Rudolf-Diesel-Straße 59
    48157 Münster
    www.busitec.de
      
    Sitz der Gesellschaft: Münster
    HR B 55 75 - Amtsgericht Münster
    USt-IdNr. DE 204607833 - St.Nr. 336/5704/1277
    Geschäftsführer: Henning Eiben, Martin Saalmann, Simon Schwingel
    
    Donnerstag, 3. Februar 2011 08:49
  • In meiner Testumgebung (und deren meiner Kollegen) genau anders rum (Server 2008 R2 Enterprise + SharePoint Server 2010). Für alle web.config Dateien (genauer gesagt für alle von SharePoint angelegten IIS Sites) erhält Jeder Leserechte. Ich konnte leider keine Dokumentation zu den standardmäßigen IIS-Rechte die SharePoint anlegt finden.

    Konntest Du inzwischen die Ursache bestätigen? Falls ja, können wir den Thread somit schließen?

    Gruß
    Andrei

    Donnerstag, 3. Februar 2011 09:44
  • On 03.02.2011 10:44, Andrei Talmaciu wrote:
    >
    > In meiner Testumgebung (und deren meiner Kollegen) genau anders rum
    > (Server 2008 R2 Enterprise + SharePoint Server 2010). Für alle
    > web.config Dateien (genauer gesagt für alle von SharePoint
    > angelegten IIS Sites) erhält Jeder Leserechte. Ich konnte leider keine
    > Dokumentation zu den standardmäßigen IIS-Rechte die SharePoint anlegt
    > finden.
    >
    > Konntest Du inzwischen die Ursache bestätigen? Falls ja, können wir
    > den Thread somit schließen?
    >
    Ich habe das nun so gelöst, dass ich mit einer Singleton-Instance auf
    die Web-Config zugreife und dafür dann einmalig elevate.
     
    --
     
    Henning Eiben
     
    busitec GmbH
    Consultant
     
     
    Rudolf-Diesel-Straße 59
    48157 Münster
    www.busitec.de
      
    Sitz der Gesellschaft: Münster
    HR B 55 75 - Amtsgericht Münster
    USt-IdNr. DE 204607833 - St.Nr. 336/5704/1277
    Geschäftsführer: Henning Eiben, Martin Saalmann, Simon Schwingel
     
     
    Montag, 7. Februar 2011 15:10