- 添加API客户端、加密存储和provision/token激活逻辑 - WebSocket改用Bearer令牌认证,移除REGISTER请求 - 设备ID改为服务端下发,支持令牌刷新和强制下线处理 - 新增deviceSecret加密存储和accessToken自动刷新 - 更新设备ID获取方式为出厂SN,添加安全存储依赖
54 lines
1.8 KiB
Java
54 lines
1.8 KiB
Java
package com.ttstd.signaling.security;
|
|
|
|
/**
|
|
* 鉴权/账号相关业务异常。
|
|
*
|
|
* <p>{@code publicMessage} 是可返回给客户端的模糊提示,
|
|
* {@code detail} 仅用于服务端日志,避免向外泄露账号是否存在、设备是否在线等信息。
|
|
*/
|
|
public class AuthException extends RuntimeException {
|
|
|
|
private final int status;
|
|
private final String code;
|
|
private final String publicMessage;
|
|
|
|
public AuthException(int status, String code, String publicMessage) {
|
|
this(status, code, publicMessage, publicMessage);
|
|
}
|
|
|
|
public AuthException(int status, String code, String publicMessage, String detail) {
|
|
super(detail);
|
|
this.status = status;
|
|
this.code = code;
|
|
this.publicMessage = publicMessage;
|
|
}
|
|
|
|
public int getStatus() { return status; }
|
|
public String getCode() { return code; }
|
|
public String getPublicMessage() { return publicMessage; }
|
|
|
|
public static AuthException unauthorized(String detail) {
|
|
return new AuthException(401, "UNAUTHORIZED", "认证失败", detail);
|
|
}
|
|
|
|
public static AuthException forbidden(String publicMessage, String detail) {
|
|
return new AuthException(403, "FORBIDDEN", publicMessage, detail);
|
|
}
|
|
|
|
public static AuthException forbidden(String publicMessage) {
|
|
return new AuthException(403, "FORBIDDEN", publicMessage, publicMessage);
|
|
}
|
|
|
|
public static AuthException badRequest(String publicMessage) {
|
|
return new AuthException(400, "BAD_REQUEST", publicMessage);
|
|
}
|
|
|
|
public static AuthException notFound(String publicMessage) {
|
|
return new AuthException(404, "NOT_FOUND", publicMessage);
|
|
}
|
|
|
|
public static AuthException tooManyRequests(String publicMessage) {
|
|
return new AuthException(429, "TOO_MANY_REQUESTS", publicMessage);
|
|
}
|
|
}
|