RemoteAccessToken.java
package iu.auth.config;
import java.net.URI;
import edu.iu.auth.oauth.IuAuthorizationDetails;
import edu.iu.auth.oauth.IuCallerAttributes;
import edu.iu.client.IuJson;
import iu.crypt.Jwt;
import jakarta.json.JsonObject;
/**
* Exposes claims specific to authorizing EJB invocation.
*/
public class RemoteAccessToken extends Jwt {
/**
* Constructor.
*
* @param claims Parsed JSON claims
*/
public RemoteAccessToken(JsonObject claims) {
super(claims);
}
/**
* Gets a builder.
*
* @return {@link RemoteAccessTokenBuilder}
*/
public static RemoteAccessTokenBuilder<?> builder() {
return new RemoteAccessTokenBuilder<>();
}
/**
* Gets the called URL.
*
* @param <T> details interface type
* @param type authorization details type
* @param detailInterface authorization details interface
* @return authorization details
*/
protected <T extends IuAuthorizationDetails> T getAuthorizationDetails(String type, Class<T> detailInterface) {
return detailInterface.cast(RemoteAccessTokenBuilder.adaptAuthorizationDetails(detailInterface)
.fromJson(claims.getJsonArray("authorization_details").stream()
.filter(a -> type.equals(IuJson.get(a.asJsonObject(), "type"))).findFirst().get()));
}
/**
* Gets the authorized scope.
*
* @return scope
*/
public String getScope() {
return IuJson.get(claims, "scope");
}
/**
* Gets the called URL.
*
* @return {@link URI}
*/
public IuCallerAttributes getCallerAttributes() {
return getAuthorizationDetails(IuCallerAttributes.TYPE, IuCallerAttributes.class);
}
}