Frage

Hier ist meine Situation ...

Ich schreibe ein .NET / C # Sicherheitssystem (Autorisierung und Authentifizierung) für eine große Sammlung von Web-Anwendungen, die einen Single Sign-On Verfahren erfordern. Ich bin mit Active Directory als Datenspeicher und haben einen sehr schönen Prototyp geschrieben, die mit AD über LDAP in Verbindung steht. Diese Komponente ruft Informationen über den angemeldeten Benutzer, die ich in AD gespeichert haben, die ich dann ihre Sicherheitsrollen in .Net Formularauthentifizierung festgelegt verwenden.

1) Alles ist gut.

kein System Admin oder Network Engineer zu sein, war ich mit der Menge der Systemadministration nicht vertraut beteiligt mit einer AD-Instanz einrichten. Ich war nicht bewusst, dass für jede Domain, ich einen separaten Server und Domänencontroller benötigt. Wie sich herausstellt, gibt es wie 9 verschiedene Domains, die mein Team für all die verschiedenen Umgebungen eingerichtet werden soll erfordert, dass wir AD wirst zugreifen ...

  • env1.dev.mycompany.com
  • env1.qa.mycompany.com
  • env1.stage.mycompany.com
  • env2.dev.mycompany.com
  • etc

... So, jetzt habe ich etwas von einem administrativen Kopfschmerzen auf mich gelegt auf, weil ich alle diese Maschinen bin haben, zu halten (oder VM), das etwas ist, was ich bin nicht unbedingt sicher, ich möchte tun.

2) Es ist nicht alles gut.

Der Prototyp wirklich fest ist, und AD sorgt für eine sehr gute Datenbasis für die Lösung, aber jetzt frage ich mich, wenn ich den Code Schrott soll und ein SQL Server-Datenprovider schreiben statt (ich weiß, .Net bietet bereits ein, aber nicht allein meine geschäftlichen Anforderungen für die Zulassung passen).

Wie auch immer, so von einer hohen Niveau Perspektive durch dieses Problem zu denken, ich versuche. Im Allgemeinen Ich halte das Stolpern über die Tatsache, dass ich eine wirklich gute Lösung werfen würde, nur weil einige Server-Wartung? Ich frage mich, ob jemand hier ein Szenario wie dieses erlebt hat und was genau entschieden, was Sie zu tun.

Muss nicht entweder AD spezifisch sein, nur eine Situation, wo Sie zwischen einer guten Software-Lösung bewerten mußten, und es ist die Serverwartung Einschränkungen.

War es hilfreich?

Lösung

Im Allgemeinen ist die Verwendbarkeit eines Produkts ist, was die Menschen zwischen ihm und ähnlichen Produkten wählen macht. Wenn das Produkt schlechte Usability hat, wird nicht die Benutzer egal, wie hoch die Qualität sein Code ist -. Alles, was ihnen wichtig ist, wie einfach und effektiv, es zu benutzen ist und wie gut es ihre Bedürfnisse erfüllt

Die Wartung kann als ein Aspekt der Benutzerfreundlichkeit gedacht werden. Ich würde es oberste Priorität ein leicht zu pflegende Produkt zu haben. Auf lange Sicht, die viele Arbeitsstunden von den Administratoren sparen.

Eine Möglichkeit, darüber nachzudenken, die Gestaltung ist zunächst, was die nutzbare Lösung aus dem / der Endbenutzers Administrators Sicht wäre, und dann ist ihm eine intellektuelle Herausforderung zu machen tatsächlich zu, dass ein optimale Lösung zu implementieren. Es wird wahrscheinlich mehr Aufwand vom Programmierer benötigen, aber das Endergebnis besser sein wird.

Zum Beispiel ZFS ist ein Produkt, bei dem der Wartung Pflege gut aufgenommen wurde (obwohl ich habe es nicht persönlich in Anspruch genommen). Wenn es entworfen wurde, wurde viel Mühe gegeben, so dass es leicht, das Dateisystem mit ZFS Kommandozeilen-Tools zu verwalten -. Und diese Design-Entscheidungen wirken sich auf alle Ebenen von ZFS (zB Speicherpools)

Als ein anderes Beispiel, ich habe vor kurzem der Planung, wie tut Wartung in einem zukünftigen Projekt von mir - einer verteilten Datenbank und Anwendungsserver. Darüber nachzudenken, wie typische Verwaltungsaufgaben passieren werden (Installation / Upgrade von Anwendungen, Hinzufügen / Entfernen von Servern im Cluster, die Lösung Hardware-Fehler etc.), hat mir geholfen, einige Design-Entscheidungen zu sortieren. Einige von ihnen gehen ziemlich tief in die Architektur des Systems (zum Beispiel, wie Anwendungen und Erweiterungen werden zur Laufzeit geladen wird, und wie die Server finden andere Server im Cluster).

Andere Tipps

Wenn ein einzelnes Zeichen auf System für ein Windows-System einrichten ich sehr likly seine AD zu verwenden. Als System-Administrator. Ich versuche, eine Single-Source-of-Datenpolitik zu folgen. AD ist bereits hält viel von meinem Windows-Benutzer / Sicherheitsdaten. Ich würde es vorziehen, alle eher dort zu haben, als ein zweites System.

Wenn dev / test / prod Umgebungen einrichten Ich versuche, um sicherzustellen, dass die eng an die eine Prod passen, ganz besonders im Bereich gearbeitet wird, auf (wo Entwicklungsanstrengungen setzen, etc werden). Also, wenn das System der Einrichtung eine Schnittstelle mit AD zu entwickeln, würde ich wahrscheinlich mehr AD-Server.

Welche Optionen könnte das Admin vereinfachen?

Können Sie haben 1-Master-Server, die Sie in der üblichen Weise erhalten und so etwas wie ein VMware Kopierprozess verwenden, um alle oder die meisten anderen aufrecht zu erhalten? Anstatt etwas zu 9-Servern zu tun, halten Sie die anderen 8 als Kopien dieser Spiegel den Master mit Ausnahme von Änderungen dev / Test zu unterstützen?

Sie können mehrere Dev oder Test-Domänen von 1 AD-Server ausgeführt?

Können Sie Script-Aktion?

Können Sie die Anzahl von Umgebungen, vor allem am oberen Ende des Tests reduzieren? Z.B. bieten mehrere Entwicklungsumgebungen und Rolle auf Veröffentlichungen in einem einzigen Test ein?

Warum nicht einfach verwenden OUs statt getrennter Domänen beim Testen? Das heißt, eine einzige Domäne, aber festlegen, dass Benutzer für bestimmte Versionen müssen innerhalb dieser Domäne in einer bestimmten OU finden. Was würden Sie in Ihrem Suchfunktionen tun für Benutzer aufzublicken, dann würden Sie die besondere OU als Such root angeben anstelle der Stamm der Domäne. In jeder OU könnten Sie IDs haben, die die Umwelt übernehmen sie einzigartig zu halten, zum Beispiel user_env1_dev, user_env2_dev, user_env1_qa, ...

Ich benutze AD viel für meinen apps und nie getrennte Bereiche für Entwicklung / Prüfung einzurichten.

Verwenden Sie ein Provider Muster und abstrakte Ihre Datenquelle Anrufe.

Dann können Sie so konfigurieren, dass AD oder SQL on the fly verwenden.

public abstract SSODataProvider {
     public bool AuthenticateUser(string u, string p);
}

public ADSSODataProvider : SSODataProvider {
    public override AutheticateUser(string u, string p) {
       //do auth here
    }
}

public SQLSSODataProvider : SSODataProvider {
    public override AuthenticateUser(String u, string p) {
      //call DB
    }
}

public static SSODataProvider dataProvider;

if (ConfigurationSettings.AppSettings["SSODataProvider"] == "SQL")
   dataProvider = new SQLSSODataProvider();
else
   dataProvider = new ADSSODataProvider();

....

dataProvider.AuthenticateUser("sss","sss");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top