Skip to content

Instantly share code, notes, and snippets.

@tstahl
Last active May 24, 2023 20:43
Show Gist options
  • Select an option

  • Save tstahl/e134dcd56d56da101553fbeb8b0a1055 to your computer and use it in GitHub Desktop.

Select an option

Save tstahl/e134dcd56d56da101553fbeb8b0a1055 to your computer and use it in GitHub Desktop.
GenerateUPSTClass
public class GenerateUpst {
private static final String CONFIG_FILE_PATH = "/function/app/config";
//THIS IS THE EPHEMERAL PUBLIC KEY FOR REQUEST SIGNING
// private static final String PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArh1dTq2GdgxQEMziN8GouiVO/ytWQ9B/lQIsASYydd1PV33/tlO1FNX3ohLg3oYcja8+bDqjAAC7PRCBgEUc7+RYzM5wO6rbIS/hllczhkkLJ/9zn/ril+/+ayl4piWtmRXENq4+GBTteusqHHYI1G3a67m5w8AqX/oa9Jwj99SUPyibLwxMZS0zS5pbtWHHBhexvJfzl/unb0Y+5ZY+mEDbEs7FxyFJGm9VDIK0eMaAf22moXx1hRa0L3yYxXEr7ek2XBOfAafWS+7AHUxGMeZsX+vS5YkTsApfgKKDHwpsAgIraqL7djWTzcs8NsRJ6fZUKQjDsj4SC70OjW96fwIDAQAB";
private static final String DEMO_API_KEY_PROFILE = "UPSTJPN";
private static final String ENCRYPTION_ALGORTIHM = "RSA";
private static final int ENCRYPTION_KEY_SIZE = 2048;
private static final int SIXTY_TOKEN_EXPIRY = 60;
public String invokeGenerateUpstWithApiKey(String userOcid, String pubKey) throws NoSuchAlgorithmException, IOException {
String PUBLIC_KEY = pubKey;
System.out.println("PUBKEY: " + PUBLIC_KEY);
// Gets desired profile from configuration file
final ConfigFileReader.ConfigFile configFile =
ConfigFileReader.parse(CONFIG_FILE_PATH, DEMO_API_KEY_PROFILE);
// Gets desired custom region.
Region r1Alpha = Region.valueOf(configFile.get("region"));
System.out.println("USER OCID INSIDE INVOKE:" + userOcid);
// Generates GenerateUserSecurityToken API request
GenerateUserSecurityTokenDetails requestBody = GenerateUserSecurityTokenDetails.builder()
.publicKey(PUBLIC_KEY)
.expiryInMinutes(SIXTY_TOKEN_EXPIRY)
.build();
GenerateUserSecurityTokenRequest request = GenerateUserSecurityTokenRequest.builder()
.generateUserSecurityTokenDetails(requestBody)
.build();
// Builds an Authentication Details Provider that supports API key signature
Supplier<InputStream> privateKeySupplierFromConfigEntry
= new SimplePrivateKeySupplier(configFile.get("key_file"));
SimpleAuthenticationDetailsProvider provider = SimpleAuthenticationDetailsProvider.builder()
.tenantId(configFile.get("tenancy"))
.userId(userOcid)
.fingerprint(configFile.get("fingerprint"))
.privateKeySupplier(privateKeySupplierFromConfigEntry)
.region(r1Alpha)
.build();
// Builds Identity Data Plane client
DataplaneClient dataplaneClient = DataplaneClient.builder().build(provider);
// Calls GenerateUserSecurityToken API to obtain a user security token
try {
GenerateUserSecurityTokenResponse response = dataplaneClient.generateUserSecurityToken(request);
SecurityToken securityToken = response.getSecurityToken();
String tokenStr = securityToken.getToken();
// System.out.println(tokenStr);
return tokenStr;
}catch (Exception exception){
return "broke";
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment