fix #492: add token context selection
This commit is contained in:
@@ -75,10 +75,23 @@ public class OrdsProbeService {
|
||||
));
|
||||
}
|
||||
|
||||
BearerTokenRecord token = tokenService.findByPlainToken(command.bearerToken());
|
||||
if (token == null) {
|
||||
return auditAndReturn(command, ProbeResult.blocked(
|
||||
ProbeStatus.TOKEN_NOT_FOUND, "TOKEN_NOT_FOUND", "토큰을 찾을 수 없습니다."));
|
||||
BearerTokenRecord token;
|
||||
if (command.tokenKeyId() == null) {
|
||||
token = tokenService.findByPlainToken(command.bearerToken());
|
||||
if (token == null) {
|
||||
return auditAndReturn(command, ProbeResult.blocked(
|
||||
ProbeStatus.TOKEN_NOT_FOUND, "TOKEN_NOT_FOUND", "토큰을 찾을 수 없습니다."));
|
||||
}
|
||||
} else {
|
||||
token = tokenService.findById(command.tokenKeyId());
|
||||
if (token == null) {
|
||||
return auditAndReturn(command, ProbeResult.blocked(
|
||||
ProbeStatus.INVALID_TOKEN, "INVALID_TOKEN", "선택한 등록 토큰을 찾을 수 없습니다."));
|
||||
}
|
||||
if (!tokenService.matches(token, command.bearerToken())) {
|
||||
return auditAndReturn(command, ProbeResult.blocked(
|
||||
ProbeStatus.INVALID_TOKEN, "INVALID_TOKEN", "입력한 Bearer Token 원문이 선택한 등록 토큰과 일치하지 않습니다."));
|
||||
}
|
||||
}
|
||||
if (!token.active(LocalDateTime.now(clock.withZone(ZoneId.systemDefault())))) {
|
||||
return auditAndReturn(command, ProbeResult.blocked(
|
||||
@@ -232,6 +245,9 @@ public class OrdsProbeService {
|
||||
}
|
||||
|
||||
private Long tokenKeyId(ProbeCommand command) {
|
||||
if (command.tokenKeyId() != null) {
|
||||
return command.tokenKeyId();
|
||||
}
|
||||
BearerTokenRecord token = tokenService.findByPlainToken(command.bearerToken());
|
||||
return token == null ? null : token.keyId();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user