User ID, Password und Role püfen

Themen rund um den praktischen Einsatz von Firebird. Fragen zu SQL, Performance, Datenbankstrukturen, etc.

Moderator: thorben.braun

Martin
Beiträge: 15
Registriert: Mo 31. Jan 2022, 09:45

Hallo zusammen,

ich habe immer gedacht, dass ... wenn ich eine nicht regisrtierte User ID im Connection String verwende ... dass Firebird die Connection nicht öffnet.
Das stimmt wohl nicht. Ich kann für User ID und Password eingeben, was ich will ... die Connection wird hergestellt.
Die User ID könnte ich über ne Systemtabelle prüfen, ob diese User ID überhaupt registriert ist.
Die Role könnte ich auch über ne Systemtabelle prüfen.

Aber wie prüfe ich das Password?

Vielen Dank

Martin
Benutzeravatar
martin.koeditz
Beiträge: 478
Registriert: Sa 31. Mär 2018, 14:35

Guten Morgen Martin,

was verstehst du unter User ID? Den Accountnamen?
Auch die Verbindungsanfrage muss vom Server ja geprüft werden. Damit wird natürlich auch eine interne Verbindung geöffnet. Im Fehlerfall wird halt eine entsprechende Meldung zurückgegeben.
Arbeitest du mit einem Embedded-System? Da verhält sich der Verbindungsaufbau anders als bei den Servervarianten.

Das Kennwort wirst du nicht prüfen können, da die Kennwörter über Einweg-Hashs abgelegt werden. Diese können nicht entschlüsselt werden. Wenn du jedoch den passenden Algorithmus kennst, kannst du ein Klartextkennwort verschlüsseln und mit dem in der DB vergleichen. Ich weiß allerdings nicht, ob der Zugriff auf die Kennwörter in Firebird überhaupt möglich ist.

Gruß
Martin
Martin Köditz
it & synergy GmbH
Martin
Beiträge: 15
Registriert: Mo 31. Jan 2022, 09:45

Guten Morgen Martin,

ja, ich arbeite mit einem Embedded-System.
Vielleicht stelle ich die Frage mal anders:
Wie kann ich prüfen, ob der Anwender bei der Anmeldung an die Datenbank seinen Namen (User ID) und sein Passort richtig eingegeben hat?
Wenn er sein Passwort nicht richtig eingegeben hat, möchte ich eine entsprechende Fehlermeldung anzeigen lassen
- so wie das viele Programme machen, bei denen man sich anmelden muss.

Viele Grüße

Martin
bfuerchau
Beiträge: 546
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Da du ja auch eine Admin-Anmeldung besitzen solltest, hast du nur dann die Möglichkeit die User abzufragen.
Das Kennwort kannst du nur prüfen, wenn du dich mit dem falschen Kennwort anmeldest.
Martin
Beiträge: 15
Registriert: Mo 31. Jan 2022, 09:45

Hallo zusammmen,

also ... für Firebird 3 und 4 habe ich ich es gelöst. Ich habe in einem anderen Beitrag in diesem Form diese Einträge für die 'firebird.config' gefunden:

AuthServer = Legacy_Auth, WinSspi
AuthClient = Legacy_Auth, Srp, WinSspi
UserManager = Legacy_UserManager

Das funktioniert soweit auch sehr gut. Eine Datenbank 'Connection' wird zwar hergestellt, aber sobald ich eine Tabelle öffnen möchte, bekomme ich eine entsprechende Fehlermeldung.

Nur mit Firebird 2.5 Embedded klappt das nicht so richtig.
Das Anlegen eines Users funktioniert zwar - beim "Commit" gekomme ich aber die Meldung "feature is not supported".
Allerdings finde ich in der 'firebird.config' diese 3 oben aufgeführten Einträge nicht.
Es gibt lediglich diesen Eintrag :

Authentication=native

Wie funktioniert das mit den Usern etc bei Firebird 2.5?

Vielen Dank und viele Grüße

Martin
bfuerchau
Beiträge: 546
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

In 2.5 wird noch alles über die System-DB von Firebird geregelt. Die Datenbank selber kennt das noch nicht, und 2.5 ist die Legacy-Version.
Martin
Beiträge: 15
Registriert: Mo 31. Jan 2022, 09:45

Ich bin es nochmal ... Martin

tja, da hab ich mich etwas zu früh gefreut. Das mit dem Anlegen, Löschen etc von Verwendern einer Datenbank klappt soweit ...
Aber das mit dem Passwort noch nicht.
Ich lege einen Anwender "Martin" mit Passwort "xyz" an und vergebe ihm das SELECT Recht zu einer Tabelle. So weit so gut.
Wenn ich mich mit "Martin" mit Passwort "aaa" anmelde, kann ich trotzdem die Tabelle einsehen ... obwohl ich mich mit dem falschen Passwort angemeldet habe.

Das verstehe ich nicht! :shock:

Kann mir jemand das erklären bzw sagen, wie das mit dem Passwort korrekt funktioniert.

Betrifft Firebird 3.

Vielen Dank

Martin
Benutzeravatar
martin.koeditz
Beiträge: 478
Registriert: Sa 31. Mär 2018, 14:35

Hallo Martin,

wenn ich mich recht erinnere, nutzt Firebird Embedded keine Kennwörter. Damit wäre das beschriebene Verhalten klar.

Gruß
Martin
Martin Köditz
it & synergy GmbH
Benutzeravatar
martin.koeditz
Beiträge: 478
Registriert: Sa 31. Mär 2018, 14:35

Ich habe noch eine amtliche Referenz gefunden:
https://firebirdsql.org/rlsnotesh/insta ... embed.html

Darin heißt es:
The security database (security2.fdb) is not used in connecting to the embedded server. Hence it is not required. Any user is able to attach to any database. Since both the server and the client run in the same address space, security becomes just an agreement between the accessor and the accessed, which can be easily compromised.
Deutsch:
Die Sicherheitsdatenbank (security2.fdb) wird nicht für die Verbindung zum eingebetteten Server verwendet. Daher ist diese nicht erforderlich. Jeder Benutzer kann sich mit jeder Datenbank verbinden. Da sowohl der Server als auch der Client im selben Adressraum ausgeführt werden, kommt es nur zu einer Vereinbarung zwischen dem Zugriffsanfragen und dem Zugriffsgebenden, was leicht kompromittiert werden kann.
Dazu kommt noch ein Hinweis zu den Rechten in der DB:
SQL privileges are still checked and enforced. Users that are assigned privileges in a Firebird database are not dependent on the existence of the user in the security database. Applications may still validly pass a user name in the database connection attributes and should do so, to make their user known to the database's access control list.
Deutsch:
SQL-Berechtigungen werden weiterhin überprüft und durchgesetzt. Benutzer, denen Berechtigungen in einer Firebird-Datenbank zugewiesen wurden, sind nicht von der Existenz des Benutzers in der Sicherheitsdatenbank abhängig. Anwendungen können weiterhin gültig einen Benutzernamen in den Datenbankverbindungsattributen übergeben und sollten dies tun, um ihren Benutzer der Zugriffssteuerungsliste der Datenbank bekannt zu machen.
Ich hoffe, das hilft dir weiter.

Gruß
Martin
Martin Köditz
it & synergy GmbH
Martin
Beiträge: 15
Registriert: Mo 31. Jan 2022, 09:45

Hallo Martin,

wenn auch etwas verspätet ... meine Rückmeldung.

Deine Informationen haben mir auf jeden Fall weiter eholfen ... auch wenn mich das Ergebnis nicht ganz befriedigt.
Ist halt so und muss/kann ich mit leben.

Wenn ich das richtig verstanden habe, müsste ich mit meiner Benutzeroberfläche für Embedded Firebird Datenbanken ne eigene Benutzerverwaltung implementieren ... so mit verschlüssentem Passwort und so ...

Vielen Dank und viele Grüße

Marin
Antworten