java 单点登录实例
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
class User {
private String username;
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
class TokenService {
private static final Map<String, String> userTokenMap = new HashMap<>();
public static String generateToken(String username) {
String token = UUID.randomUUID().toString();
userTokenMap.put(token, username);
return token;
}
public static boolean isValidToken(String token) {
return userTokenMap.containsKey(token);
}
public static String getUsername(String token) {
return userTokenMap.get(token);
}
}
class AuthenticationService {
private static final Map<String, User> users = new HashMap<>();
public static void registerUser(String username, String password) {
users.put(username, new User(username, password));
}
public static boolean authenticate(String username, String password) {
User user = users.get(username);
return user != null && user.getPassword().equals(password);
}
}
public class SsoExample {
public static void main(String[] args) {
// 注册用户
AuthenticationService.registerUser(“user1”, “password1”);
AuthenticationService.registerUser(“user2”, “password2”);
// 模拟用户登录请求
String username = "user1";
String password = "password1";
// 验证用户身份
if (AuthenticationService.authenticate(username, password)) {
// 生成Token
String token = TokenService.generateToken(username);
System.out.println("User logged in. Token: " + token);
// 模拟其他系统的验证过程
if (TokenService.isValidToken(token)) {
System.out.println("Token is valid. User: " + TokenService.getUsername(token));
} else {
System.out.println("Invalid token.");
}
} else {
System.out.println("Invalid credentials.");
}
}
}
在这个例子中,我们模拟了用户注册、用户身份验证和Token的生成与验证过程。用户通过提供用户名和密码进行身份验证。如果身份验证成功,则生成一个Token并返回给用户。其他系统可以通过验证Token来确认用户身份,而不需要再次验证用户名和密码。