check_user_account()
Prüft, ob sich ein Benutzer mit dem angegebenen Passwort anmelden kann - nach denselben Kriterien wie der enaio® enterprise-manager. Das ist die echte Anmeldedatenprüfung: Das Passwort wird mit dem gespeicherten Passwort des Kontos verglichen (im Gegensatz zu check_password_complexity(), das nur die Passwortregel prüft).
Neben dem Passwort beantwortet der Job auch, ob das Konto existiert, ob es gesperrt ist und wie lange das Passwort noch gültig ist.
|
Der Session-Benutzer braucht die Systemrolle |
|
Fehlversuche zählen wie bei einer echten Anmeldung auf die Kontosperre ein; ein erfolgreicher Aufruf setzt den Zähler zurück. Die Schwelle ist über die API nicht auslesbar, also selbst begrenzen - eine Schleife über Passwortkandidaten sperrt das Konto. |
1. Signatur
-
Sync
-
Async
ecm.security.check_user_account(username: str, password: str) -> ECMUserAccountCheck
await ecm.security.check_user_account(username: str, password: str) -> ECMUserAccountCheck
2. Parameter
| Parameter | Standard | Beschreibung |
|---|---|---|
|
erforderlich |
Anmeldename des Kontos, z.B. |
|
erforderlich |
Das zu prüfende Passwort im Klartext (oder ein mit |
|
Das Server-Handbuch führt |
3. Rückgabewert
ECMUserAccountCheck:
| Attribut | Typ | Beschreibung |
|---|---|---|
|
|
Ergebnis der Prüfung, siehe Tabelle unten. |
|
|
Interner Benutzername ( |
|
|
Authentifizierungsverfahren, z.B. |
|
|
Restgültigkeit innerhalb des konfigurierten |
|
|
|
|
|
|
ECMUserAccountStatus:
| Wert | Code | Bedeutung |
|---|---|---|
|
|
Konto existiert, ist nicht gesperrt, Passwort stimmt. |
|
|
Kein Konto mit diesem Anmeldenamen. |
|
|
Konto wurde gerade durch zu viele Fehlversuche gesperrt. |
|
|
Passwort falsch, ein weiterer Versuch ist möglich. |
|
|
Konto war bereits gesperrt, Anmeldung nicht möglich. |
Falsches Passwort, unbekannter Benutzer und gesperrtes Konto werfen keine Exception - das sind
erwartete Ausgänge einer Anmeldeprüfung und kommen als Status zurück. Der Server meldet sie als
Jobfehler statt über die dokumentierten Action-Werte 2/4/5; die Methode übersetzt diese
Fehlercodes in den passenden Status. Andere Serverfehler bleiben Fehler.
Als Erfolg gilt ausschliesslich Action = 0. Ein fehlender oder unbekannter Wert ist eine
Ablehnung, damit eine abweichende Serverantwort keine offene Tür wird.
4. Fehler
| Exception | Ursache |
|---|---|
|
|
|
Dem Session-Benutzer fehlt die Systemrolle |
|
Unterklasse, die |
5. Beispiele
5.1. Anmeldedaten prüfen
-
Sync
-
Async
from ecmind_blue_client.ecm import ECMUserAccountStatus
check = ecm.security.check_user_account("john", "S3cret!")
if check.login_possible:
print(f"Anmeldung möglich als {check.username} über {check.login_method}")
if check.password_expired:
print("Passwort ist abgelaufen und muss geändert werden")
elif check.password_expires_in_days > 0:
print(f"Passwort läuft in {check.password_expires_in_days} Tagen ab")
elif check.status is ECMUserAccountStatus.WRONG_PASSWORD:
print("Passwort falsch")
elif check.status is ECMUserAccountStatus.USER_UNKNOWN:
print("Benutzer unbekannt")
else:
print("Konto gesperrt")
from ecmind_blue_client.ecm import ECMUserAccountStatus
check = await ecm.security.check_user_account("john", "S3cret!")
if check.login_possible:
print(f"Anmeldung möglich als {check.username} über {check.login_method}")
elif check.status is ECMUserAccountStatus.WRONG_PASSWORD:
print("Passwort falsch")
5.2. Ablaufende Passwörter melden
for user in ecm.security.users():
check = ecm.security.check_user_account(user.username, service_passwords[user.username])
if check.login_possible and 0 <= check.password_expires_in_days <= 14:
print(f"{check.username}: Passwort läuft in {check.password_expires_in_days} Tagen ab")
6. Serverseitige Einstellungen
Ablauf und Sperrverhalten steuern vier Parameter im enaio® enterprise-manager (Servereigenschaften, Bereich Anmeldung):
| enterprise-manager | Registry-Eintrag | Bedeutung |
|---|---|---|
Gültigkeitszeitraum für Passwörter |
|
"Sie geben einen Zeitraum in Tagen an, über den ein Passwort gültig ist. Der Wert '0' schaltet
diese Funktion aus." Standard: |
Hinweis auf den Ablauf des Gültigkeitszeitraums |
|
"Sie geben einen Wert in Tagen an, ab dem der Benutzer beim Login einen Hinweis auf den Ablauf
des Passwortes erhält." Standard: |
Sicherheitsstufe |
|
Verhalten bei fehlgeschlagenen Anmeldungen: Standard |
Einmalpasswort |
|
"Neue Benutzer werden mit Einmalpasswort angelegt, sie müssen beim Anmelden an enaio® sofort ihr
Passwort ändern." Standard: |
Die Parameter sind in der enaio®-Administratordokumentation unter den Servereigenschaften
beschrieben, die Job-Parameter Action und PwdExpires in der enaio® server-api-Referenz.
7. Hinweise
-
Die Prüfung läuft in der bestehenden Session; der Job baut keine Sitzung für den geprüften Benutzer auf, sondern liefert nur das Prüfergebnis.
-
Das Passwort niemals selbst im Klartext übergeben: Der Server dekodiert den Wert und meldet Klartext als "Invalid password". Die Methode kodiert deshalb grundsätzlich selbst.
-
Ob Fehlversuche zur Sperre führen, steuert die Sicherheitsstufe (
Login\SecurityLevel, Standard0= keine Einschränkung; darüber Beendigung der Anwendung bzw. Sperrung des Kontos nach drei Fehlversuchen). Der Zähler gilt pro Konto, andere Benutzer bleiben unbeeinträchtigt. -
Eine Sperre aus Fehlanmeldungen ist an den Kontoattributen nicht erkennbar: user() meldet weiterhin
locked = False, während diese PrüfungACCOUNT_LOCKEDliefert.
8. Siehe auch
-
check_password_complexity() — Passwortregel prüfen (keine Anmeldedatenprüfung, keine Rolle nötig)
-
roles() — Systemrollen des Benutzers prüfen
-
user() — Kontoattribute inkl.
locked,valid_to,change_pwd -
update_user() — Konto entsperren oder Passwort setzen