Kann ich Active Directory für die Sicherheit auf Benutzerebene in einer Access-Anwendung verwenden? Bitte, bitte?

Kann ich Active Directory für die Sicherheit auf Benutzerebene in einer Access-Anwendung verwenden? Bitte, bitte?

Meine Firma nutzt eine Access + MySQL-Anwendung ziemlich häufig, die wahrscheinlich viel Verkehr auf dem Daily WTF verursachen würde, wenn ich den Quellcode posten würde. Die Verwaltung der Benutzer und ihrer Berechtigungen gerät außer Kontrolle, und ich scheine immer mehr Zeit damit zu verbringen, diese zu optimieren oder herauszufinden, warum jemand nicht sehen kann, was er sehen soll.

Ursprünglich war es für die Nutzung durch drei Benutzer in einem Lager konzipiert. Mittlerweile wird es von über zwanzig Benutzern in vier Bundesstaaten verwendet, und bald sollen weitere hinzukommen. Die Funktionen wurden in einem Verhältnis von etwa 10:1 zu den Benutzern hinzugefügt ... Die eigentliche Kernanwendung ist nicht schlecht, aber die Benutzerverwaltung ist mühsam. Access ist ein nettes Frontend für die Daten selbst, die in unserer Hauptniederlassung auf einem MySQL-Backend gespeichert sind. Benutzer haben Cisco-VPN-Boxen in den Zweigstellen, und auch das funktioniert einwandfrei. Der Umfang hat sich von einem einfachen Lagerversanddatensatz zu einem vollwertigen CRM/ERP entwickelt ... nun, ich schätze, man kann das nicht als Lösung bezeichnen. Eine Emulsion vielleicht. Wenn ich das Budget hätte, würde ich SAP anrufen und ihnen sagen, dass sie sich darum kümmern sollen. Ich fürchte, das ist in absehbarer Zukunft nicht möglich.

Ich habe den Anweisungen von Google (was nicht immer die sicherste Vorgehensweise ist) gefolgt und den „Benutzerebenen-Sicherheitsassistenten“ in Access verwendet, um Benutzernamen und Kennwörter verschiedenen Benutzern zuzuweisen. Das war kein Problem, als ich mit insgesamt 4-5 Benutzern und 3 aktiven Benutzern begann. Aber jetzt ist es ziemlich umständlich. Mein größter Wunsch und Wunsch ist, dass es eine Möglichkeit gibt, Benutzer zu authentifizieren und Berechtigungsrollen basierend auf Active Directory-Benutzernamen und -Kennwörtern zuzuweisen. Mir wurde gesagt, dass das unmöglich ist. Einige Google-Suchen haben nichts Nennenswertes ergeben.

Ich vermute, dass es möglich sein sollte, mithilfe von Active Directory eine Art Authentifizierungsframework zu erhalten, da VBA Links zu allen möglichen APIs in Windows hat. Aber ist es den Aufwand wert? Hat das schon mal jemand zum Laufen gebracht, oder besteht die Gefahr, dass ich nicht nur meine WTF-würdige Anwendung, sondern auch die Domäne in die Luft jage?

Antwort1

Ich weiß, dass es möglich ist, aber anscheinend tun es nur sehr wenige Access-Entwickler. Wenn jemand anderes den Code geschrieben hätte, würde ich ihn selbst verwenden, aber ich brauche ihn nicht genug, um ihn selbst zu schreiben.

Das Schlüsselkonzept besteht darin, dass Sie über eine LDAP-Abfrage mit ADO auf AD-Informationen zugreifen können. Es gibt damit keine Möglichkeit, Berechtigungen für Access-Objekte zu erzwingen, aber Sie können den Anwendungsfluss/die Präsentation sicherlich basierend auf der AD-Mitgliedschaft steuern. Siehedieser Threadals Ausgangspunkt. Außerdem gibt eseine MS-WissensdatenbankArtikel dazu, der den LDAP-Ansatz erklärt.

Übrigens, solange Sie keine AD-spezifische Funktionalität (wie Organisationseinheiten) benötigen, müssen Sie AD überhaupt nicht verwenden. Sie können reguläre API-Aufrufe verwenden, um Informationen zur Gruppenmitgliedschaft abzurufen. Siehedieser Stackoverflow-Beitragfür Code, der die Richtung vorschlägt (ich kann diesen Code nicht überprüfen, da er ziemlich elliptisch aussieht, d. h. keine API-Deklarationen, aber er gibt das Grundkonzept vor).

Antwort2

Auf dieser Ebene ist keine direkte Schnittstelle zu AD möglich. Das Beste, was Sie direkt tun können, ist, Dateiberechtigungen basierend auf AD-Konten zuzuweisen. Es würde ein wenig Mühe kosten, dies über VBA zu bewerkstelligen, ist aber sicherlich nicht unverständlich. Ich würde sagen, Sie sollten eine ziemlich gründliche ROI-Analyse durchführen, bevor Sie sich damit befassen.

verwandte Informationen