public void ThrowsExceptionWhenNoX5uHeaderPresent() { var mockedCache = CreateEmptyMockedCache(); var resolver = new JwtSigningKeyResolver(Mock.Of <HttpClient>(), mockedCache.Object, Options.Create(_options)); var token = ""; SecurityToken securityToken = null; var tokenValidationParameters = new TokenValidationParameters(); Assert.Throws <NullReferenceException>(() => resolver.IssuerSigningKeyResolver(token, securityToken, "", tokenValidationParameters)); }
public void ThrowsExceptionWhenNoX5uHeaderPresent() { var mockedCache = CreateEmptyMockedCache(); var mockHandler = new MockMessageHandler <string>(HttpStatusCode.OK, ""); var resolver = new JwtSigningKeyResolver(mockedCache.Object, Options.Create(_options), mockHandler, _logger); var token = ""; SecurityToken securityToken = null; var tokenValidationParameters = new TokenValidationParameters(); Assert.Throws <NullReferenceException>(() => resolver.IssuerSigningKeyResolver(token, securityToken, "", tokenValidationParameters)); }
public void X5uFromHeaderIsUsed() { var mockedCache = CreateEmptyMockedCache(); var mockHandler = new MockMessageHandler <string>(HttpStatusCode.OK, ""); var resolver = new JwtSigningKeyResolver(mockedCache.Object, Options.Create(_options), mockHandler, _logger); var token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsIng1dSI6Imh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC94NXUifQ.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE0NzI1NDk1NDgsImV4cCI6MTUwNDA4NTU0OCwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsIkdpdmVuTmFtZSI6IkpvaG5ueSIsIlN1cm5hbWUiOiJSb2NrZXQiLCJFbWFpbCI6Impyb2NrZXRAZXhhbXBsZS5jb20iLCJSb2xlIjpbIk1hbmFnZXIiLCJQcm9qZWN0IEFkbWluaXN0cmF0b3IiXX0.jKg9l0cuTapEFcx9v1pLtBiigK_7EXlCqvKZBoS24XE"; SecurityToken securityToken = new JwtSecurityToken(token); var tokenValidationParameters = new TokenValidationParameters(); try { var keys = resolver.IssuerSigningKeyResolver(token, securityToken, "", tokenValidationParameters); } catch (Exception) { } Assert.Equal("http://localhost:5000/x5u", mockHandler.RequestUri.ToString()); }
public void CachedKeyIsReturned() { _options.JwtSigningKeyCacheDuration = 5; string key = "key"; var mockedCache = CreateMockedCache(CACHE_KEY, key); var mockHandler = new MockMessageHandler <string>(HttpStatusCode.BadRequest, ""); var resolver = new JwtSigningKeyResolver(mockedCache.Object, Options.Create(_options), mockHandler, _logger); var token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsIng1dSI6Imh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC94NXUifQ.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE0NzI1NDk1NDgsImV4cCI6MTUwNDA4NTU0OCwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsIkdpdmVuTmFtZSI6IkpvaG5ueSIsIlN1cm5hbWUiOiJSb2NrZXQiLCJFbWFpbCI6Impyb2NrZXRAZXhhbXBsZS5jb20iLCJSb2xlIjpbIk1hbmFnZXIiLCJQcm9qZWN0IEFkbWluaXN0cmF0b3IiXX0.jKg9l0cuTapEFcx9v1pLtBiigK_7EXlCqvKZBoS24XE"; SecurityToken securityToken = new JwtSecurityToken(token); var tokenValidationParameters = new TokenValidationParameters(); var keys = resolver.IssuerSigningKeyResolver(token, securityToken, "", tokenValidationParameters); var securityKey = keys.First() as SymmetricSecurityKey; Assert.NotNull(securityKey); Assert.Equal(Encoding.UTF8.GetBytes(key), securityKey.Key); }
public void ResolveKey() { var mockedCache = CreateEmptyMockedCache(); var cert = "{\"x5u\": \"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQ0lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUFqbXJnN3NGeFJkb2JTWkhJMlpqawpucnBGVC9RclhEcFl6VVU4SU1hNFRPa2dFUnRaM09CbFpkbWNieXVmcEJuNTJmWDlYRWVIOVR1QjkxOWNQeEJFCnpKN0NzUmVTK1dxcHk5UFN3K3BtQ2lDZmpIZmx1ZDJ1dzUwbmVYOGVKeFl0ekhDN1VOOCt1QThvQ0tqdzBJM1AKK0VDYTdhVy9EbU1jSS81T3NyaXhlN2ZQenY4Q0V6aFRidzdBOTZuSzIrVkkvVXFGV2Yxb0Rzd2xYOFBPaHpMRQppdWo3eEJpdWJqbDZONERablF5YW84UzJFZ2ZQT05KNG1ySW42VEQwNzEvdE9NaDFHWUF3SnBWQ3YzYWdSUVdHCjhNaWxhYXlyQzRaNTNrNmRLV1FTNklmVTd3NWJnQjEraGdJenBoK05NbzdWWTROYkpYOTZ1b0Q3QW9pQjRvNjYKclMxakNLS3lEcUwwTTkwQzFIaDcrUit5TWhJa0ZkRUdDS0ZHaDNmbDlVREdKNEZEVG1vNGR1MENxbm13bWpvVgpmUmR0eW4rNjFBRHhQNnpkN24xTEFxeVBCNEVreHVrUTc3Sy9PTkxwUnYydHJmdDlvU1VSMWpXTXE3dzEyV1lyCmhZVnhPR1NvNU40RUdCSmpIQXlRZ01DUzhQWGdtN045WGFOdWtlczBZQ3lBTDlYU0JDRTNuNFQ0Qk9XRzlEMkIKQ0QvelV2bjVDRnl3Smh1ZzlSdzRMV3QwbzJHYXlpTjN5SDBwZFhBc2pTRlRiN1ZpdnBPc1cwL3k2aUdmMEJqSwpUOHlYSkVvOG9QcDRIMkl1TDR4TDQ4bW50Qm5WalBzSXRuemlHQ2pxZ0hCN2xxYjdxeXUvNit4dEhnTGxGb2MyCjBLQnZTYURGWWJiRXRPNE5GVnJNdUlFQ0F3RUFBUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQ==\"}"; var mockHandler = new MockMessageHandler <string>(HttpStatusCode.OK, cert); var resolver = new JwtSigningKeyResolver(mockedCache.Object, Options.Create(_options), mockHandler, _logger); var token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsIng1dSI6Imh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC94NXUifQ.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE0NzI1NDk1NDgsImV4cCI6MTUwNDA4NTU0OCwiYXVkIjoid3d3LmV4YW1wbGUuY29tIiwic3ViIjoianJvY2tldEBleGFtcGxlLmNvbSIsIkdpdmVuTmFtZSI6IkpvaG5ueSIsIlN1cm5hbWUiOiJSb2NrZXQiLCJFbWFpbCI6Impyb2NrZXRAZXhhbXBsZS5jb20iLCJSb2xlIjpbIk1hbmFnZXIiLCJQcm9qZWN0IEFkbWluaXN0cmF0b3IiXX0.jKg9l0cuTapEFcx9v1pLtBiigK_7EXlCqvKZBoS24XE"; SecurityToken securityToken = new JwtSecurityToken(token); var tokenValidationParameters = new TokenValidationParameters(); var keys = resolver.IssuerSigningKeyResolver(token, securityToken, "", tokenValidationParameters); Assert.NotNull(keys); Assert.NotEmpty(keys); Assert.IsType <RsaSecurityKey>(keys.First()); var key = keys.First() as RsaSecurityKey; Assert.Equal(66571, key.Parameters.Modulus.Sum(b => b)); Assert.Equal(2, key.Parameters.Exponent.Sum(b => b)); }