|
28 | 28 | import static org.mockito.Mockito.verify; |
29 | 29 | import static org.mockito.Mockito.when; |
30 | 30 |
|
31 | | -import com.auth0.jwt.JWT; |
32 | | -import com.auth0.jwt.interfaces.DecodedJWT; |
33 | 31 | import com.google.auth.Credentials; |
34 | 32 | import com.google.auth.RequestMetadataCallback; |
35 | 33 | import com.google.auth.oauth2.AccessToken; |
|
40 | 38 | import com.google.common.collect.LinkedListMultimap; |
41 | 39 | import com.google.common.collect.ListMultimap; |
42 | 40 | import com.google.common.collect.Multimaps; |
| 41 | +import com.google.common.io.BaseEncoding; |
43 | 42 | import io.grpc.Attributes; |
44 | 43 | import io.grpc.CallCredentials; |
45 | 44 | import io.grpc.CallCredentials.MetadataApplier; |
46 | 45 | import io.grpc.Metadata; |
47 | 46 | import io.grpc.MethodDescriptor; |
48 | 47 | import io.grpc.SecurityLevel; |
49 | 48 | import io.grpc.Status; |
| 49 | +import io.grpc.internal.JsonParser; |
50 | 50 | import io.grpc.testing.TestMethodDescriptors; |
51 | 51 | import java.io.IOException; |
52 | 52 | import java.net.URI; |
@@ -408,13 +408,16 @@ public void jwtAccessCredentialsInRequestMetadata() throws Exception { |
408 | 408 | verify(applier).apply(headersCaptor.capture()); |
409 | 409 | Metadata headers = headersCaptor.getValue(); |
410 | 410 | String token = |
411 | | - Iterables.getOnlyElement(headers.getAll(AUTHORIZATION)).substring("Bearer".length()); |
412 | | - DecodedJWT decoded = JWT.decode(token); |
413 | | - assertEquals("test-private-key-id", decoded.getKeyId()); |
414 | | - assertEquals("https://example.com:123/a.service", |
415 | | - Iterables.getOnlyElement(decoded.getAudience())); |
416 | | - assertEquals("test-email@example.com", decoded.getIssuer()); |
417 | | - assertEquals("test-email@example.com", decoded.getSubject()); |
| 411 | + Iterables.getOnlyElement(headers.getAll(AUTHORIZATION)).substring("Bearer ".length()); |
| 412 | + String[] parts = token.split("\\.", 3); |
| 413 | + String jsonHeader = new String(BaseEncoding.base64Url().decode(parts[0]), US_ASCII); |
| 414 | + String jsonPayload = new String(BaseEncoding.base64Url().decode(parts[1]), US_ASCII); |
| 415 | + Map<?, ?> header = (Map<?, ?>) JsonParser.parse(jsonHeader); |
| 416 | + assertEquals("test-private-key-id", header.get("kid")); |
| 417 | + Map<?, ?> payload = (Map<?, ?>) JsonParser.parse(jsonPayload); |
| 418 | + assertEquals("https://example.com:123/a.service", payload.get("aud")); |
| 419 | + assertEquals("test-email@example.com", payload.get("iss")); |
| 420 | + assertEquals("test-email@example.com", payload.get("sub")); |
418 | 421 | } |
419 | 422 |
|
420 | 423 | private int runPendingRunnables() { |
|
0 commit comments