God morgen!
Jeg er i gang med å lage et SSO, altså et felles innloggingssystem for jobben min. Tanken er å lagre brukernavn / passord i en MySQL-database eller lignende, jeg har ikke fått prøvd ut alle mulighetene jeg har helt enda.
Jeg har møtt på en utfordring, og det er at jeg ikke helt vet hvordan krypteringsalgoritmen til Windows / Active Directory fungerer.
Meningen er at passordet til Active Directory-brukerne skal kunne brukes i andre sammenhenger også, f.eks. i et PHP-skript.
Jeg er fra før kjent med hvordan jeg kan lage et kryptert passord med f.eks. SHA512 i et PHP-skript, men tenker også at hvis jeg lagrer passordet i SHA512-format, så vil ikke Windows sin krypteringsalgoritme kunne få det til å stemme med passordet til brukeren, og deretter vil innlogging til Active Directory feile.
Jeg har lest at Windows bruker en egen og komplisert algoritme, så jeg vurderer å kanskje bruke samme algoritme i PHP-skriptene jeg utvikler, slik at dette problemet er eliminert.
Jeg klarer imidlertid ikke å finne ut hvordan dette kan gjøres, ettersom det ser ut til at det også blir lagt inn en salt når passordet opprettes, og at den krypterte versjonen av passordet ikke er den samme hver gang det blir generert. Dette vil da føre til en ulempe i et PHP-skript som skal sammenligne den krypterte hashen i databasen med hashen som blir generert når brukeren forsøker å logge inn via PHP-skriptet.
Det er ikke bare PHP-skript jeg har tenkt å lage dette for, dette skal også kunne brukes i f.eks. Dovecot og være tilgjengelig for senere bruk av evt. nye systemer.
Noen som kan sparke meg i riktig retning? Selvfølgelig, jeg kan nok bruke LDAP-plugins for å autenisere brukere mot Active Directory i seg selv, men jeg vil prøve å holde meg så mye til MySQL som mulig. Akkurat nå prøver jeg meg med å utvikle LDAP helt fra bunnen av med ldapjs og en plugin for MySQL-oppbevaring, men har ikke gjort så mye med det enda, ettersom jeg må forstå hvordan algoritmen til Windows fungerer før jeg evt. kaster bort tiden på å gjøre dette.
Jeg er i gang med å lage et SSO, altså et felles innloggingssystem for jobben min. Tanken er å lagre brukernavn / passord i en MySQL-database eller lignende, jeg har ikke fått prøvd ut alle mulighetene jeg har helt enda.
Jeg har møtt på en utfordring, og det er at jeg ikke helt vet hvordan krypteringsalgoritmen til Windows / Active Directory fungerer.
Meningen er at passordet til Active Directory-brukerne skal kunne brukes i andre sammenhenger også, f.eks. i et PHP-skript.
Jeg er fra før kjent med hvordan jeg kan lage et kryptert passord med f.eks. SHA512 i et PHP-skript, men tenker også at hvis jeg lagrer passordet i SHA512-format, så vil ikke Windows sin krypteringsalgoritme kunne få det til å stemme med passordet til brukeren, og deretter vil innlogging til Active Directory feile.
Jeg har lest at Windows bruker en egen og komplisert algoritme, så jeg vurderer å kanskje bruke samme algoritme i PHP-skriptene jeg utvikler, slik at dette problemet er eliminert.
Jeg klarer imidlertid ikke å finne ut hvordan dette kan gjøres, ettersom det ser ut til at det også blir lagt inn en salt når passordet opprettes, og at den krypterte versjonen av passordet ikke er den samme hver gang det blir generert. Dette vil da føre til en ulempe i et PHP-skript som skal sammenligne den krypterte hashen i databasen med hashen som blir generert når brukeren forsøker å logge inn via PHP-skriptet.
Det er ikke bare PHP-skript jeg har tenkt å lage dette for, dette skal også kunne brukes i f.eks. Dovecot og være tilgjengelig for senere bruk av evt. nye systemer.
Noen som kan sparke meg i riktig retning? Selvfølgelig, jeg kan nok bruke LDAP-plugins for å autenisere brukere mot Active Directory i seg selv, men jeg vil prøve å holde meg så mye til MySQL som mulig. Akkurat nå prøver jeg meg med å utvikle LDAP helt fra bunnen av med ldapjs og en plugin for MySQL-oppbevaring, men har ikke gjort så mye med det enda, ettersom jeg må forstå hvordan algoritmen til Windows fungerer før jeg evt. kaster bort tiden på å gjøre dette.