palio.designer.authorization
Class PerServicePasswordHandler
java.lang.Object
palio.designer.authorization.PerServicePasswordHandler
- All Implemented Interfaces:
- javax.security.auth.callback.CallbackHandler
- Direct Known Subclasses:
- AdminUserPerServicePasswordHandler, DesignerUserPerServicePasswordHandler
public class PerServicePasswordHandler
- extends java.lang.Object
- implements javax.security.auth.callback.CallbackHandler
Najbezpieczeniejszą metodą przesyłania hasła, jest przesłanie hasha złożonego z hasła oraz timestampu, który jest dołączony do
wiadomości. W ten sposób nie można odtworzyć oryginalnego hasła, nie można też powtórzyć hasha by ponownie się zalogować
(timestamp będzie przedawniony). Ta metoda wymaga jednak trzymania w bazie danych hasła oryginalnego (nie zahashowanego)
ze względu na to, że do porównywania po stronie serwera generowany jest każdorazowo nowy hash (z timestampem z wiadomości).
Dlatego przyjąłem metodę podwójnego hashowania. Do wysłania hasło jest hashowane samo, następnie ponownie wraz z timestampem.
Do porównywania brane jest zahashowane hasło z bazy i hashowane wraz z timestampem. Ta metoda moim zdaniem daje bezpieczeństwo
przesyłania hasła oraz jednocześnie niemożność wyciągnięcia oryginalnego hasła z bazy danych.
Method Summary |
void |
handle(javax.security.auth.callback.Callback[] callbacks)
|
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
PerServicePasswordHandler
public PerServicePasswordHandler(GlobalPasswordHandler globalPasswords)
handle
public void handle(javax.security.auth.callback.Callback[] callbacks)
throws java.io.IOException,
javax.security.auth.callback.UnsupportedCallbackException
- Specified by:
handle
in interface javax.security.auth.callback.CallbackHandler
- Throws:
java.io.IOException
javax.security.auth.callback.UnsupportedCallbackException