[英]NIO Client / server securely authenticate credentials
我使用受SSL保護的Java NIO連接客戶端和服務器。 要連接到服務器,系統將提示用戶輸入主機,端口,用戶名和密碼。 到目前為止,我可以連接客戶端和服務器(它們成功完成了SSL握手),並且從理論上講,我可以開始來回發送數據。 我尚未編寫驗證登錄憑據(用戶名,密碼)的機制。
服務器可以通過在數據庫中查找用戶名和密碼來對它們進行身份驗證。 如果客戶端發送的憑據不正確,則連接將關閉。
問題1:何時應驗證憑據? 我認為這必須在SSL握手之后發生。
問題2:如何在憑據被序列化並發送到服務器之前安全地打包憑據? 我認為我應該對密碼進行哈希處理。 我也應該對用戶名進行哈希處理嗎?
這樣簡單的事情就足夠了嗎?
public class LoginCredentials implements Serializable {
private static final long serialVersionUID = 1026410425432118798L;
private final String username;
private final byte[] passwordHash;
public LoginCredentials(String username, byte[] passwordHash) {
this.username = username;
this.passwordHash = passwordHash;
}
public final String getUsername() {
return username;
}
public final byte[] getPasswordHash() {
return passwordHash;
}
}
問題3:身份驗證憑證應該在每個會話中執行一次,對嗎? 我閱讀了一些帖子,這些帖子似乎表明應針對每個請求驗證憑據。
問題4:我應該使用哪種哈希算法? SHA–512似乎很受歡迎。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.