|
| 1 | +package com.uber.cadence.serviceclient.auth; |
| 2 | + |
| 3 | +import static org.junit.Assert.*; |
| 4 | + |
| 5 | +import com.auth0.jwt.JWT; |
| 6 | +import com.auth0.jwt.interfaces.Claim; |
| 7 | +import com.auth0.jwt.interfaces.DecodedJWT; |
| 8 | +import java.nio.charset.StandardCharsets; |
| 9 | +import java.security.KeyFactory; |
| 10 | +import java.security.NoSuchAlgorithmException; |
| 11 | +import java.security.interfaces.RSAPrivateKey; |
| 12 | +import java.security.interfaces.RSAPublicKey; |
| 13 | +import java.security.spec.InvalidKeySpecException; |
| 14 | +import java.security.spec.PKCS8EncodedKeySpec; |
| 15 | +import java.security.spec.X509EncodedKeySpec; |
| 16 | +import org.apache.commons.codec.binary.Base64; |
| 17 | +import org.junit.Test; |
| 18 | + |
| 19 | +public class AdminJwtAuthorizationProviderTest { |
| 20 | + @Test |
| 21 | + public void testCreateAuthToken() throws NoSuchAlgorithmException, InvalidKeySpecException { |
| 22 | + |
| 23 | + Base64 b64 = new Base64(); |
| 24 | + byte[] decodedPub = b64.decode(testPublicKey.getBytes(StandardCharsets.UTF_8)); |
| 25 | + byte[] decodedPri = b64.decode(testPrivateKey.getBytes(StandardCharsets.UTF_8)); |
| 26 | + |
| 27 | + KeyFactory rsaKeyFactory = KeyFactory.getInstance("RSA"); |
| 28 | + |
| 29 | + final RSAPublicKey rsaPublicKey = |
| 30 | + (RSAPublicKey) rsaKeyFactory.generatePublic(new X509EncodedKeySpec(decodedPub)); |
| 31 | + |
| 32 | + final RSAPrivateKey rsaPrivateKey = |
| 33 | + (RSAPrivateKey) rsaKeyFactory.generatePrivate(new PKCS8EncodedKeySpec(decodedPri)); |
| 34 | + |
| 35 | + final AdminJwtAuthorizationProvider authProvider = |
| 36 | + new AdminJwtAuthorizationProvider(rsaPublicKey, rsaPrivateKey); |
| 37 | + final String jwt = new String(authProvider.getAuthToken(), StandardCharsets.UTF_8); |
| 38 | + |
| 39 | + final DecodedJWT decodedJwt = JWT.decode(jwt); |
| 40 | + final Claim adminClaim = decodedJwt.getClaim("admin"); |
| 41 | + assertTrue(adminClaim.asBoolean()); |
| 42 | + final Claim ttlClaim = decodedJwt.getClaim("ttl"); |
| 43 | + assertEquals((int) (60 * 10), (int) ttlClaim.asInt()); |
| 44 | + } |
| 45 | + |
| 46 | + private static String testPublicKey = |
| 47 | + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAscukltHilaq+o5gIVE4P\n" |
| 48 | + + "GwWl+esvJ2EaEpWw6ogr98Un11YJ4oKkwIkLw4iIo0tveCINA3cZmxaW1RejRWKE\n" |
| 49 | + + "qYFtQ1rYd6BsnFAHXWh2R3A1FtpG6ANUEGkE7OAJe2/L42E/ImJ+GQxRvartInDM\n" |
| 50 | + + "yfiRfB7+L2n3wG+Ni+hBNMtAaX4Wwbj2hup21Jjuo96TuhcGImBFBATGWaYR2wqe\n" |
| 51 | + + "/6by9wJexPHlY/1uDp3SnzF1dCLjp76SGCfyYqOGC/PxhQi7mDxeH9/tIC+lt/Sz\n" |
| 52 | + + "wc1n8gZLtlRlZHinvYa8lhWXqVYw6WD8h4LTgALq9iY+beD1PFQSY1GkQtt0RhRw\n" |
| 53 | + + "eQIDAQAB"; |
| 54 | + |
| 55 | + private static String testPrivateKey = |
| 56 | + "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCxy6SW0eKVqr6j\n" |
| 57 | + + "mAhUTg8bBaX56y8nYRoSlbDqiCv3xSfXVgnigqTAiQvDiIijS294Ig0DdxmbFpbV\n" |
| 58 | + + "F6NFYoSpgW1DWth3oGycUAddaHZHcDUW2kboA1QQaQTs4Al7b8vjYT8iYn4ZDFG9\n" |
| 59 | + + "qu0icMzJ+JF8Hv4vaffAb42L6EE0y0BpfhbBuPaG6nbUmO6j3pO6FwYiYEUEBMZZ\n" |
| 60 | + + "phHbCp7/pvL3Al7E8eVj/W4OndKfMXV0IuOnvpIYJ/Jio4YL8/GFCLuYPF4f3+0g\n" |
| 61 | + + "L6W39LPBzWfyBku2VGVkeKe9hryWFZepVjDpYPyHgtOAAur2Jj5t4PU8VBJjUaRC\n" |
| 62 | + + "23RGFHB5AgMBAAECggEABj1T9Orf0W9nskDQ2QQ7cuVdZEJjpMrbTK1Aw1L8/Qc9\n" |
| 63 | + + "TSkINDEayaV9mn1RXe61APcBSdP4ER7nXfTZiQ21LhLcWWg9T3cbh1b70oRqyI9z\n" |
| 64 | + + "Pi6HSBeWz4kfUBX9izMQFBZKzjYn6qaJp1b8bGXKRWkcvPRZqLhmsRPmeH3xrOHe\n" |
| 65 | + + "qsIDhYXMjRoOgEUxLbk8iPLP6nx0icPJl/tHK2l76R+1Ko6TBE69Md2krUIuh0u4\n" |
| 66 | + + "nm9n+Az+0GuvkFsLw5KMGhSBeqB+ez5qtFa8T8CUCn98IjiUDOwgZdFrNldFLcZf\n" |
| 67 | + + "putw7O2qCA9LT+mFBQ6CVsVu/9tKeXQ9sJ7p3lxhwQKBgQDjt7HNIabLncdXPMu0\n" |
| 68 | + + "ByRyNVme0+Y1vbj9Q7iodk77hvlzWpD1p5Oyvq7cN+Cb4c1iO/ZQXMyUw+9hLgmf\n" |
| 69 | + + "LNquH2d4hK1Jerzc/ciwu6dUBsCW8+0VJd4M2UNN15rJMPvbZGmqMq9Np1iCTCjE\n" |
| 70 | + + "dvHo7xjPcJhsbhMbHq+PaUU7OQKBgQDH4KuaHBFTGUPkRaQGAZNRB8dDvSExV6ID\n" |
| 71 | + + "Pblzr80g9kKHUnQCQfIDLjHVgDbTaSCdRw7+EXRyRmLy5mfPWEbUFfIemEpEcEcb\n" |
| 72 | + + "3geWeVDx4Z/FwprWFuVifRopRSQ/FAbMXLIui7OHXWLEtzBvLkR/uS2VIVPm10PV\n" |
| 73 | + + "pbh2EXifQQKBgQDbcOLbjelBYLt/euvGgfeCQ50orIS1Fy5UidVCKjh0tR5gJk95\n" |
| 74 | + + "G1L+tjilqQc+0LtuReBYkwTm+2YMXSQSi1P05fh9MEYZgDjOMZYbkcpu887V6Rx3\n" |
| 75 | + + "+7Te5uOv+OyFozmhs0MMK6m5iGGHtsK2iPUYBoj/Jj8MhorM4KZH6ic4KQKBgQCl\n" |
| 76 | + + "3zIpg09xSc9Iue5juZz6qtzXvzWzkAj4bZnggq1VxGfzix6Q3Q8tSoG6r1tQWLbj\n" |
| 77 | + + "Lpwnhm6/guAMud6+eIDW8ptqfnFrmE26t6hOXMEq6lXANT5vmrKj6DP0uddZrZHy\n" |
| 78 | + + "uJ55+B91n68elvPP4HKiGBfW4cCSGmTGAXAyM0+JwQKBgQCz2cNiFrr+oEnlHDLg\n" |
| 79 | + + "EqsiEufppT4FSZPy9/MtuWuMgEOBu34cckYaai+nahQLQvH62KskTK0EUjE1ywub\n" |
| 80 | + + "NPORuXcugxIBMHWyseOS7lrtrlSBxU9gntS7jHdM3IMrrUy9YZBvPvFGP0wLdpKM\n" |
| 81 | + + "nvt3vT46hs3n28XZpb18uRkSDw=="; |
| 82 | +} |
0 commit comments