Autor Thema: Frage zu Authenticate()/AuthenticateFn  (Gelesen 190 mal)

Offline Markus Bloch

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 3244
Frage zu Authenticate()/AuthenticateFn
« am: 06 Dezember 2017, 21:00:33 »
Hallo zusammen,

ich habe eine Frage bzgl. dem Authenticate-Mechanismus. Die Funktion Authenticate() sowie die AuthenticateFn in bspw. allowed hat folgende Rückgabewerte:

0 - don't care
1 - success
2 - failed

Nun frage ich mich, warum ausgerechnet 0 => don't care und 2 => failed? Rein logisch betrachtet würde es doch eher Sinn machen zu sagen 0 => failed, 1 => success und 2 => don't care wobei Authenticate() nur 0/1 zurückgibt (sobald eine AuthenticateFn mit 1 zurück kommt). Sollte in Authenticate() keine AuthenticateFn eine 1 liefern, so wird immer das Ergebnis der letzten Prüfung zurückgegeben (0 oder 2). Damit kann man aber eigentlich so nichts anfangen, da die Authentifizierung nicht erfolgreich war, man aber dennoch auf != 1 prüfen muss. Besser wäre es doch in diesem Fall immer 0 zurückzugeben, damit man einfach nur mit if(Authenticate(...)) { ... } arbeiten kann, oder irre ich mich da?

Hintergrund meiner Frage: Ich versuche gerade die entsprechenden Abschnitte für die jeweiligen Wiki-Seiten zu schreiben, damit ich endlich mal fertig werde.

Vielleicht kann mich jemand erhellen.

Vielen Dank

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 13697
  • Das "S" in "IoT" steht für "Security"
Antw:Frage zu Authenticate()/AuthenticateFn
« Antwort #1 am: 06 Dezember 2017, 22:13:57 »
oh, da versucht mal wieder jemand, krumme Gurken gradezubiegen  8)
-----------------------
Nächster Hamburg-Stammtisch: 23.03.2018

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 17436
Antw:Frage zu Authenticate()/AuthenticateFn
« Antwort #2 am: 07 Dezember 2017, 09:53:01 »
Zitat
Besser wäre es doch in diesem Fall immer 0 zurückzugeben, damit man einfach nur mit if(Authenticate(...)) { ... } arbeiten kann

Ich meine das reicht nicht, da man beim "nein" wissen muss, warum nicht: wenn die Schnittstelle ohne Passwort kommt, dann muss man nach Passwort fragen (401:unauthorized), wenn aber eins da ist, aber falsch, dann ist die Reaktion anders (403:forbidden).

 

decade-submarginal