Omschrijvende naam gezocht voor data zoals wachtwoord
Mijn logica zit wel anders in elkaar dan die van Symfony, en ik ben er best blij mee tot nu toe, want het is heel flexibel en uitbreidbaar.
Mijn authenticatie framework ben ik zodanig aan het ontwerpen dat je niet alleen met een standaard login een gebruiker laat aanmelden. Ik ga er dus (net als Symfony) niet van uit dat een authenticatie alleen een gebruikersnaam/e-mail en wachtwoord nodig heeft.
Deze flexibiliteit is natuurlijk heel belangrijk.
Wat als de gebruiker van het framework een user wil laten inloggen met klantnummer en wachtwoord.
Of een productnaam en een licantiecode. (Ik noem maar iets)
Of alleen een API key. Of een eenmalige code uit een app.
Ik heb het dus zo ontworpen dat alle gegevens die nodig zijn bij de login, zijn gebundeld in een object.
Dit object noem ik gewoon een token en implementeert ook een TokenInterface. Denk aan Symfony.
Maar bij symfony wordt voor elk soort login een aparte token class gemaakt. Zoals een UsernamePasswordToken.
Ik wil gewoon gebruik maken van 1 token class.
Deze heeft dan een Identity object en een IdentityProof object.
Dat IdentityProof kan een wachtwoord zijn, een code, etc. En zowel Identity als IdentityProof kunnen in zich meerdere gegevens hebben.
IdentityProof kan bijvoorbeeld een wachtwoord en een activeringscode in zich hebben. (Bijvoorbeeld)
En Identity kan een klantnummer en email in zich hebben.
De gegevens kunnen gewoon worden toegevoegd aan de Identity en IdentityProof.
Maar IdentityProof is een beetje een rare naam.
De logica van het inloggen zelf wordt geschreven door de gebruiker van het framework door de Authentication class te extenden, of AuthenticatorInterface te implementeren. In die klasse kan dan de Identity en IdentityProof worden gelezen en zo kan alles verder gaan...
Weet iemand een betere naam voor IdentityProof?
En heeft iemand misschien opmerkingen over mijn class design?
Ik hoor het graag!
Credentials?
Frank Nietbelangrijk op 02/07/2016 14:40:28:
Credentials?
Hm, ik dacht dat Credentials gewoon alle login gegevens betekende, maar na wat beter zoeken op google vind ik dit inderdaad een goede omschrijvende naam.
Misschien nog op- of aanmerkingen over het class design?
Gewijzigd op 02/07/2016 14:51:59 door jan terhuijzen
http://stackoverflow.com/questions/1592534/what-is-token-based-authentication
Nederlands woord voor credentials: verificatiegegevens of referenties.
Zo is er bijvoorbeeld een UsernamePasswordToken en een RememberMeToken.
Beide zijn van het type AbstractToken of implementeren de TokenInterface. Voor een andere manier van inloggen zoals klantnummer en wachtwoord kan er bijvoorbeeld een CustomerNumberPasswordToken class worden geschreven.
Er wordt in elk geval altijd een token gemaakt, en daarna wordt gekeken of het token geldig is. Is het geldig, dan wordt de staat van het token op 'geldig' gezet en gaat alles verder.
En dan over token based authenticatie in het algemeen:
Bij elk soort login systeem voor het web is er eigenlijk sprake van een token based authenticatie. Ik bedoel hierbij niet meer het class design, maar hoe het werkt met de gegevens en logica zelf.
Token based authenticatie is dat je de gebruiker laat inloggen, bijvoorbeeld met een gebruikersnaam en wachtwoord.
Vervolgens ontvangt de gebruiker een token. Dit token is een beperkte tijd geldig.
Het token kan daarna steeds door de gebruiker weer worden aangeboden om toegang te krijgen tot dingen waar autorisatie voor is vereist.
Het token is iets (een soort bewijs) dat de gebruiker moet krijgen van de server, en bij zich moet dragen.
Dit is dus eigenlijk altijd een sessie(-cookie). Dat de gebruiker dus in zijn browser binnen krijgt.
Dus eigenlijk is inloggen op het web altijd token based authenticatie? Want er wordt een bewijs gemaakt en opgeslagen in een session.
En uiteindelijk is die session er gewoon omdat de gebruiker anders bij elke request weer de login gegevens (gebruikersnaam/wachtwoord) zelf moet sturen naar de server.
Gewijzigd op 03/07/2016 21:09:00 door jan terhuijzen
Jan terhuijzen op 03/07/2016 21:05:58:
Dus eigenlijk is inloggen op het web altijd token based authenticatie? Want er wordt een bewijs gemaakt en opgeslagen in een session.
Dan is het meer een factor, zoals in two-factor authentication (2FA) en multi-factor authentication (MFA).
Jan terhuijzen op 03/07/2016 21:05:58:
Zo is er bijvoorbeeld een UsernamePasswordToken en een RememberMeToken.
Beide zijn van het type AbstractToken of implementeren de TokenInterface.
Beide zijn van het type AbstractToken of implementeren de TokenInterface.
Alleen dit lijken me al ruim voldoende redenen om token te (blijven) gebruiken.
Gewijzigd op 04/07/2016 07:18:12 door Ward van der Put