
com.trimble.id.ValidatedClaimsetProvider Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of trimble-id Show documentation
Show all versions of trimble-id Show documentation
Trimble Identity OAuth Client library holds the client classes that are used for communicating with Trimble Identity Service
The newest version!
package com.trimble.id;
import com.nimbusds.jose.JOSEException;
import com.nimbusds.jose.JWSVerifier;
import com.nimbusds.jose.crypto.RSASSAVerifier;
import com.nimbusds.jose.jwk.JWK;
import com.nimbusds.jose.jwk.RSAKey;
import com.nimbusds.jwt.JWTClaimsSet;
import com.nimbusds.jwt.SignedJWT;
import com.trimble.id.analytics.AnalyticsHttpClient;
import static com.trimble.id.AuthenticationConstants.SDK_VARIANT;
import static com.trimble.id.AuthenticationConstants.SDK_VERSION;
import java.text.ParseException;
import java.util.concurrent.CompletableFuture;
/** A claimset provider that returns a validated claimset */
public class ValidatedClaimsetProvider implements IClaimsetProvider {
private IKeysetProvider keysetProvider;
/**
* Public constructor of ValidatedClaimsetProvider
*
* @param keysetProvider A provider for the keyset used to validate the JWT claimeset
*/
public ValidatedClaimsetProvider(IKeysetProvider keysetProvider) {
this.keysetProvider = keysetProvider;
AnalyticsHttpClient.sendInitEvent(this.getClass().getSimpleName(), this.getClass().getPackage().getName(), SDK_VERSION);
}
/**
* Get the claimset
*
* @param token The token to be validated
* @return A CompletableFuture that contains the validated claimset
*/
@Override
public CompletableFuture retrieveClaimset(String token) {
AnalyticsHttpClient.sendMethodEvent("retrieveClaimset", SDK_VARIANT, this.getClass().getPackage().getName(), SDK_VERSION);
return this.keysetProvider.retrieveKeyset().thenApply((keyset) -> {
try {
SignedJWT signedJwt = SignedJWT.parse(token);
String kid = signedJwt.getHeader().getKeyID();
JWK key = keyset.getKeyByKeyId(kid);
JWSVerifier verifier = new RSASSAVerifier((RSAKey) key);
if (signedJwt.verify(verifier))
return signedJwt.getJWTClaimsSet();
} catch (ParseException | JOSEException e) {
AnalyticsHttpClient.sendExceptionEvent("retrieveClaimset", SDK_VARIANT, this.getClass().getPackage().getName(), SDK_VERSION, e.getMessage());
throw new SDKClientException(e, e.getCause(), e.getMessage());
}
return null;
});
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy