Frage

Active Directory / integrierte Windows-Authentifizierung zu verwenden ist eine gegeben. Aus entwicklungs Standpunkt, was ist der beste Weg, dies zu konsumieren?

Ist es durch die Konfiguration?

<location path="SecurePage.aspx">
    <system.web>
        <authorization>
            <allow roles="MyDomain\My Secure Users" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

Ist es durch Code ?

User.IsInRole(@"MyDomain\My Secure Users");

Ist es eine gute Idee, diese in einer Datenbank zu speichern? So Gewährung neuer Benutzer / Gruppen können über eine benutzerdefinierte Anwendung getan werden? (Ich diese Frage, weil dies der Status quo.) Was ist mit dieser Idee falsch ist?

War es hilfreich?

Lösung

Es gibt keinen Grund, warum Sie nicht beide verwenden können. durch die web.config zu tun, ist wirklich einfach und effektiv. obwohl immer arbeiten auf Rollenebene. Sie verwenden die Codeversion für Szenarien, in denen Sie eine Anwendung haben, wo die Config nicht genug ist, und auch, wenn Sie anzeigen möchten / verstecken bestimmte Teile des UI (es gibt steuert auch Version davon).

Update 1: Sie haben bereits Halterungen für die Rollen, so nehme ich an der Datenbank tatsächlich zu Rollen Funktionen zuordnen. Asp.net integrierte Unterstützung und die Erweiterungspunkte sie sind auf der Rollenebene unterstützt. Wenn Sie wirklich dynamisch voll sein müssen, dann müssen Sie den Scheck an die Code-Ebene tun (die .config auf Rollen tätig ist). Es ist eine Frage des zusätzlichen Aufwand dauert es, so dass es hängt mehr von der Größe des Systems. Für die meisten Fälle mit Rollen kleben ist genug.

Andere Tipps

Ich persönlich bevorzuge einen deklarativen Ansatz (das heißt, der standortbasierte web.config Ansatz). Dies macht es einfacher, um Änderungen vorzunehmen, wenn erforderlich, ohne Umschichtung von Code zu erfordern.

Unter keinen Umständen empfehle ich Aufruf User.IsInRole () mit einer statischen Zeichenfolge, wie Sie in Ihrem Beispiel zu tun; Verwenden Sie die web.config deklarativen Ansatz, wenn Ihre Auth nicht ändert.

Möchten Sie die Route, die Sie in Ihrem letzten Absatz vorschlagen, ist völlig in Ordnung, aber ich würde es nur für Situationen empfehlen, wo Ihre Auth-Informationen wahrscheinlich häufig ändern, das heißt für die CMS-Anwendungen oder ähnliche ilk.

Kurz gesagt, ich glaube nicht, dass es ein „best practice“ zu diesem Thema; es hängt wirklich von der Anwendung ab.

Wenn es nicht viel ändern wird, verwenden Sie die web.config.

Wenn es wird eine Menge dann die Code-Methode ändern, aber mit einer Datenbank leicht veränderbar zu machen.

Mehr eine allgemeine Antwort auf Praktiken Codierung anstatt in Bezug auf Sicherheit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top