Skip to content

Commit ab2ce18

Browse files
committed
fix api
1 parent ac48904 commit ab2ce18

File tree

5 files changed

+64
-27
lines changed

5 files changed

+64
-27
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
</parent>
1010

1111
<modelVersion>4.0.0</modelVersion>
12-
<artifactId>Oauth-Token-Manager</artifactId>
13-
<version>1.0.0</version>
12+
<artifactId>oauth-token-manager</artifactId>
13+
<version>1.0.4</version>
1414
<name>OauthTokenManager</name>
1515
<packaging>jar</packaging>
1616

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package info.unterrainer.oauthtokenmanager;
2+
3+
import lombok.Data;
4+
import lombok.EqualsAndHashCode;
5+
import lombok.NoArgsConstructor;
6+
import lombok.experimental.SuperBuilder;
7+
8+
@Data
9+
@NoArgsConstructor
10+
@SuperBuilder(toBuilder = true)
11+
@EqualsAndHashCode()
12+
public class LocalOauthTokens {
13+
14+
private String accessToken;
15+
private String refreshToken;
16+
}

src/main/java/info/unterrainer/oauthtokenmanager/OauthTokenManager.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,6 @@
2929
@RequiredArgsConstructor
3030
public class OauthTokenManager {
3131

32-
public String accessToken = null;
33-
public String refreshToken = null;
34-
3532
private final String host;
3633
private final String realm;
3734

@@ -121,8 +118,10 @@ private TokenVerifier<AccessToken> persistUserInfoInContext(String authorization
121118

122119
try {
123120
TokenVerifier<AccessToken> tokenVerifier = TokenVerifier.create(authorizationHeader, AccessToken.class);
124-
AccessToken token = tokenVerifier.getToken();
125-
if (!token.isActive()) {
121+
RemoteOauthToken remoteAccessToken = RemoteOauthToken.builder()
122+
.accessToken(tokenVerifier.getToken())
123+
.build();
124+
if (!remoteAccessToken.getAccessToken().isActive()) {
126125
log.warn("Token is inactive.");
127126
return null;
128127
}
@@ -139,7 +138,8 @@ private TokenVerifier<AccessToken> persistUserInfoInContext(String authorization
139138
}
140139
}
141140

142-
public void getTokensFromCredentials(String clientId, String clientSecret, String username, String password) {
141+
public LocalOauthTokens getTokensFromCredentials(String clientId, String clientSecret, String username,
142+
String password) {
143143
try {
144144
String tokenEndpoint = host;
145145
if (!tokenEndpoint.endsWith("/"))
@@ -166,13 +166,15 @@ public void getTokensFromCredentials(String clientId, String clientSecret, Strin
166166

167167
ObjectMapper mapper = new ObjectMapper();
168168
JsonNode json = mapper.readTree(response.body());
169-
accessToken = json.get("access_token").asText();
170-
refreshToken = json.get("refresh_token").asText();
171-
172169
log.info("Token received successfully.");
173170
log.debug("Access token: {}", json.get("access_token").asText());
174171
log.debug("Refresh token: {}", json.get("refresh_token").asText());
175172

173+
return LocalOauthTokens.builder()
174+
.accessToken(json.get("access_token").asText())
175+
.refreshToken(json.get("refresh_token").asText())
176+
.build();
177+
176178
} catch (Exception e) {
177179
log.error("Error obtaining tokens from Keycloak.", e);
178180
throw new IllegalStateException("Unable to get token", e);
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package info.unterrainer.oauthtokenmanager;
2+
3+
import org.keycloak.representations.AccessToken;
4+
5+
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
7+
import lombok.NoArgsConstructor;
8+
import lombok.experimental.SuperBuilder;
9+
import lombok.extern.slf4j.Slf4j;
10+
11+
@Slf4j
12+
@Data
13+
@NoArgsConstructor
14+
@SuperBuilder(toBuilder = true)
15+
@EqualsAndHashCode()
16+
public class RemoteOauthToken {
17+
18+
private AccessToken accessToken;
19+
20+
public Long getRemoteTenantId() {
21+
if (accessToken == null)
22+
return null;
23+
String tenantId = (String) accessToken.getOtherClaims().get("value_tenant");
24+
if (tenantId == null || tenantId.isBlank())
25+
return null;
26+
try {
27+
return Long.parseLong(tenantId);
28+
} catch (NumberFormatException e) {
29+
log.warn("Invalid tenant ID in token: {}", tenantId, e);
30+
return null;
31+
}
32+
}
33+
}
Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,4 @@
1-
package info.unterrainer.websocketserver;
1+
package info.unterrainer.oauthtokenmanager;
22

3-
public class WebSocketServerTest {
4-
5-
public static void main(String[] args) {
6-
WebsocketServer server = new WebsocketServer("https://keycloak.lan.elite-zettl.at", "Cms");
7-
AiComm aiComm;
8-
9-
aiComm = new AiComm();
10-
11-
server.wsOauth("/wss", aiComm);
12-
server.ws("/ws", ws -> {
13-
ws.onConnect(ctx -> ctx.send("Welcome to our websocket-server!"));
14-
ws.onMessage(ctx -> ctx.send("Echo from server: [" + ctx.message() + "]"));
15-
});
16-
server.start(7070);
17-
}
3+
public class OauthTokenManagerTest {
184
}

0 commit comments

Comments
 (0)