Hej, Efter mycket surfande och kollar i andra forum (bla på www.asp.net) så verkar det faktiskt inte som att det går, inte ens i WSE 2.0! Jag är väl medveten om denna skumma design och hade själv velat se att det fanns lite fler metoder att göra override på som exempelvis skulle kunna lösa detta enklare...WSE-Security med "PasswordProvider" och "SendHashed"
Jag använder WSE-Security (1.0) där jag skickar inloggningsuppgifter med ett "UserNameToken".
Jag vill även använda "SendHashed" för att inte skicka lösenordet i klartext samt få den utökade säkerheten gällande "spoofade" requests.
I servicen har jag lagt till en "PasswordProvider"-klass vars jobb ju är att returnera lösenordet till det skickade användarnamnet så att WSE kan validera det (jag antar WSE-mekanismen helt enkelt re-hashar det riktiga lösenordet tillsammans med "Nonce"-värdet och Tids-värdet och jämför).
Saken är den att jag sparar alla mina användares lösenord som Hashade, vilket gör att jag inte kan få fram deras orginallösenord. Detta verkar innebära att det inte går att använda denna WSE-mekanism, vilket känns helt befängt, då det ju är vanligt förekommande att hasha lösenorden i databasen.
Jag hade självklart kunnat tvinga alla klienter att skicka "hashade" (från mig) lösenord till metoden som då skulle kunna re-hasha det igen. Men det känns inte helt 100 då det är opraktiskt för mina klienter att få SÅ otympliga och långa lösenord.
Så...några tips eller idéer? Tacksam för svar!
/FredrikSv: WSE-Security med "PasswordProvider" och "SendHashed"
Stort misstag MS!Sv: WSE-Security med "PasswordProvider" och "SendHashed"
Det finns dock två lösningar:
1. Hasha lösenordet enligt samma princip som vid lagringen innan lösenordet läggs i UsernameToken och skicka åter igen hashat, jag har inte provat detta men då borde åtminstone WSE hasha lösenorden igen och det enda "problemet" är extra klockcykler vid klientens autentisering. Kombinera detta med SecureConversation så slipper du vidare komplex autentisering vid följande metodanrop!
2. Kombinera UsernameToken autentisering med kryptering med hjälp av certifikat, det är en mycket snygg lösning och ger dig stor flexibilitet (bortsett från att du måste använda certifikat, men bara ett per server)...
Mvh
Johan Lindfors