Gegeven deze situatie:
De gebruiker (client) logt in op een website. De gebruikersgegevens zijn opgeslagen in een Windows 2003 Server Active Directory, deze dienen overeen te komen met de ingevoerde inloggegevens.
Als ik alles in plain-text doorstuur gaat alles prima: de client geeft zijn wachtwoord aan de website en de website geeft het wachtwoord door aan de AD (via ldap_bind()). De gebruiker is vervolgens succesvol ingelogd.
Maar ik heb liever niet dat de wachtwoord open en bloot het internet over geslingerd worden. Nu kan ik wel het wachtwoord via bijvoorbeeld een challenge-reponse hashen zodat nooit het wachtwoord wordt overgestuurd, maar dan kan ik niet inloggen via LDAP, daar is immers het échte wachtwoord voor nodig.
HTTP Basic Authentication, HTTP Digest Authentication en een JS Challenge-Response systeem via Javascript werken niet omdat in alle gevallen de website niet beschikt over het echte wachtwoord (alleen een hash). Basic is niet voldoende omdat het niet beveiligd is.
HTTPS/SSL is natuurlijk een optie, maar ik had liever een oplossing gevonden waarvoor SSL niet noodzakelijk is.
Hoe kan ik er nu voor zorgen dat het wachtwoord níet onversleuteld wordt overgestuurd maar de website toch het echte wachtwoord binnenkrijgt zodat het hiermee kan inloggen in de AD?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| --------------------- CLIENT --------------------- | | verstuurt inlognaam + wachtwoord | --------------------- WEBSITE --------------------- | | verstuurt inlognaam + wachtwoord via LDAP | --------------------- AD --------------------- |
De gebruiker (client) logt in op een website. De gebruikersgegevens zijn opgeslagen in een Windows 2003 Server Active Directory, deze dienen overeen te komen met de ingevoerde inloggegevens.
Als ik alles in plain-text doorstuur gaat alles prima: de client geeft zijn wachtwoord aan de website en de website geeft het wachtwoord door aan de AD (via ldap_bind()). De gebruiker is vervolgens succesvol ingelogd.
Maar ik heb liever niet dat de wachtwoord open en bloot het internet over geslingerd worden. Nu kan ik wel het wachtwoord via bijvoorbeeld een challenge-reponse hashen zodat nooit het wachtwoord wordt overgestuurd, maar dan kan ik niet inloggen via LDAP, daar is immers het échte wachtwoord voor nodig.
HTTP Basic Authentication, HTTP Digest Authentication en een JS Challenge-Response systeem via Javascript werken niet omdat in alle gevallen de website niet beschikt over het echte wachtwoord (alleen een hash). Basic is niet voldoende omdat het niet beveiligd is.
HTTPS/SSL is natuurlijk een optie, maar ik had liever een oplossing gevonden waarvoor SSL niet noodzakelijk is.
Hoe kan ik er nu voor zorgen dat het wachtwoord níet onversleuteld wordt overgestuurd maar de website toch het echte wachtwoord binnenkrijgt zodat het hiermee kan inloggen in de AD?
"If you see a light at the end of a wormhole, it's probably a photon torpedo!"