Skip to content

Commit 8db3dda

Browse files
agukasmmrts
authored andcommitted
feat(jwt): remove code that deals with exp and iat fields
WE2-584 Signed-off-by: Mati Agukas <[email protected]>
1 parent 7609e10 commit 8db3dda

File tree

9 files changed

+17
-103
lines changed

9 files changed

+17
-103
lines changed

src/WebEid.Security.Tests/TestUtils/AuthTokenValidators.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ public static IAuthTokenValidator GetAuthTokenValidator(string url, ICache<DateT
2525
{
2626
return GetAuthTokenValidatorBuilder(url, cache, certificates)
2727
// Assure that all builder methods are covered with tests.
28-
.WithAllowedClientClockSkew(TimeSpan.FromMinutes(2))
2928
.WithOcspRequestTimeout(TimeSpan.FromSeconds(1))
3029
.WithNonceDisabledOcspUrls(new Uri("http://example.org"))
3130
.WithoutUserCertificateRevocationCheckWithOcsp()

src/WebEid.Security.Tests/TestUtils/Tokens.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ internal static class Tokens
77
public const string SignedTest =
88
"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlFQXpDQ0EyV2dBd0lCQWdJUU9Xa0JXWE5ESm0xYnlGZDNYc1drdmpBS0JnZ3Foa2pPUFFRREJEQmdNUXN3Q1FZRFZRUUdFd0pGUlRFYk1Ca0dBMVVFQ2d3U1Uwc2dTVVFnVTI5c2RYUnBiMjV6SUVGVE1SY3dGUVlEVlFSaERBNU9WRkpGUlMweE1EYzBOekF4TXpFYk1Ca0dBMVVFQXd3U1ZFVlRWQ0J2WmlCRlUxUkZTVVF5TURFNE1CNFhEVEU0TVRBeE9EQTVOVEEwTjFvWERUSXpNVEF4TnpJeE5UazFPVm93ZnpFTE1Ba0dBMVVFQmhNQ1JVVXhLakFvQmdOVkJBTU1JVXJEbFVWUFVrY3NTa0ZCU3kxTFVrbFRWRXBCVGl3ek9EQXdNVEE0TlRjeE9ERVFNQTRHQTFVRUJBd0hTc09WUlU5U1J6RVdNQlFHQTFVRUtnd05Ta0ZCU3kxTFVrbFRWRXBCVGpFYU1CZ0dBMVVFQlJNUlVFNVBSVVV0TXpnd01ERXdPRFUzTVRnd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVI1azFsWHp2U2VJOU8vMXMxcFp2amhFVzhuSXRKb0cwRUJGeG1MRVk2UzdraTF2RjJRM1RFRHg2ZE56dEkxWHR4OTZjczhyNHpZVHdkaVFvRGc3azNkaVV1UjluVFdHeFFFTU8xRkRvNFk5ZkFtaVBHV1QrK0d1T1ZvWlFZM1h4aWpnZ0hETUlJQnZ6QUpCZ05WSFJNRUFqQUFNQTRHQTFVZER3RUIvd1FFQXdJRGlEQkhCZ05WSFNBRVFEQStNRElHQ3lzR0FRUUJnNUVoQVFJQk1DTXdJUVlJS3dZQkJRVUhBZ0VXRldoMGRIQnpPaTh2ZDNkM0xuTnJMbVZsTDBOUVV6QUlCZ1lFQUk5NkFRSXdId1lEVlIwUkJCZ3dGb0VVTXpnd01ERXdPRFUzTVRoQVpXVnpkR2t1WldVd0hRWURWUjBPQkJZRUZPUXN2VFFKRUJWTU1TbWh5Wlg1YmliWUp1YkFNR0VHQ0NzR0FRVUZCd0VEQkZVd1V6QlJCZ1lFQUk1R0FRVXdSekJGRmo5b2RIUndjem92TDNOckxtVmxMMlZ1TDNKbGNHOXphWFJ2Y25rdlkyOXVaR2wwYVc5dWN5MW1iM0l0ZFhObExXOW1MV05sY25ScFptbGpZWFJsY3k4VEFrVk9NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREJEQWZCZ05WSFNNRUdEQVdnQlRBaEprcHhFNmZPd0kwOXBuaENsWUFDQ2srZXpCekJnZ3JCZ0VGQlFjQkFRUm5NR1V3TEFZSUt3WUJCUVVITUFHR0lHaDBkSEE2THk5aGFXRXVaR1Z0Ynk1emF5NWxaUzlsYzNSbGFXUXlNREU0TURVR0NDc0dBUVVGQnpBQ2hpbG9kSFJ3T2k4dll5NXpheTVsWlM5VVpYTjBYMjltWDBWVFZFVkpSREl3TVRndVpHVnlMbU55ZERBS0JnZ3Foa2pPUFFRREJBT0Jpd0F3Z1ljQ1FnSDFVc21NZHRMWnRpNTFGcTJRUjR3VWtBd3BzbmhzQlYySFFxVVhGWUJKN0VYbkxDa2FYamRaS2tIcEFCZk0wUUV4N1VVaGFJNGk1M2ppSjdFMVk3V09BQUpCRFg0ejYxcG5pSEphcEkxYmtNSWlKUS90aTdoYThmZEpTTVNwQWRzNUN5SEl5SGtReldsVnk4NmY5bUE3RXUzb1JPLzFxK2VGVXpEYk5OM1Z2eTdnUVdRPSJdfQ.eyJhdWQiOlsiaHR0cHM6Ly9yaWEuZWUiLCJ1cm46Y2VydDpzaGEtMjU2OjZmMGRmMjQ0ZTRhODU2Yjk0YjNiM2I0NzU4MmEwYTUxYTMyZDY3NGRiYzcxMDcyMTFlZDIzZDRiZWM2ZDljNzIiXSwiZXhwIjoiMTU4Njg3MTE2OSIsImlhdCI6IjE1ODY4NzA4NjkiLCJpc3MiOiJ3ZWItZWlkIGFwcCB2MC45LjAtMS1nZTZlODlmYSIsIm5vbmNlIjoiMTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgiLCJzdWIiOiJKw5VFT1JHLEpBQUstS1JJU1RKQU4sMzgwMDEwODU3MTgifQ.0Y5CdMiSZ14rOnd7sbp-XeBQ7qrJVd21yTmAbiRnzAXtwqW8ZROg4jL4J7bpQ2fwyUz4-dVwLoVRVnxfJY82b8NXuxXrDb-8MXXmVYrMW0q0kPbEzqFbEnPYHjNnKAN0";
99

10+
public const string MinimalFormat =
11+
"eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlFQXpDQ0EyV2dBd0lCQWdJUUhXYlZXeENrY1l4Ynp6OW5CekdyRHpBS0JnZ3Foa2pPUFFRREJEQmdNUXN3Q1FZRFZRUUdFd0pGUlRFYk1Ca0dBMVVFQ2d3U1Uwc2dTVVFnVTI5c2RYUnBiMjV6SUVGVE1SY3dGUVlEVlFSaERBNU9WRkpGUlMweE1EYzBOekF4TXpFYk1Ca0dBMVVFQXd3U1ZFVlRWQ0J2WmlCRlUxUkZTVVF5TURFNE1CNFhEVEU0TVRBeU16RTFNek0xT1ZvWERUSXpNVEF5TWpJeE5UazFPVm93ZnpFTE1Ba0dBMVVFQmhNQ1JVVXhLakFvQmdOVkJBTU1JVXJEbFVWUFVrY3NTa0ZCU3kxTFVrbFRWRXBCVGl3ek9EQXdNVEE0TlRjeE9ERVFNQTRHQTFVRUJBd0hTc09WUlU5U1J6RVdNQlFHQTFVRUtnd05Ta0ZCU3kxTFVrbFRWRXBCVGpFYU1CZ0dBMVVFQlJNUlVFNVBSVVV0TXpnd01ERXdPRFUzTVRnd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVEvdSs5SW5jYXJWcGdyQUNONmFSZ1VpVDlsV0M5SDdsbG54b0VYZTh4b0NJOTgyTWQ4WXVKc1ZmUmRlRzVqd1ZmWGUwTjZLa0hMRlJBUnNwc3Q4cW5BQ1VMa3FGTmF0L0tqK1hSd0oyVUFOZUozR2w1WEJyK3RuTE51RGYvVWlSNmpnZ0hETUlJQnZ6QUpCZ05WSFJNRUFqQUFNQTRHQTFVZER3RUIvd1FFQXdJRGlEQkhCZ05WSFNBRVFEQStNRElHQ3lzR0FRUUJnNUVoQVFJQk1DTXdJUVlJS3dZQkJRVUhBZ0VXRldoMGRIQnpPaTh2ZDNkM0xuTnJMbVZsTDBOUVV6QUlCZ1lFQUk5NkFRSXdId1lEVlIwUkJCZ3dGb0VVTXpnd01ERXdPRFUzTVRoQVpXVnpkR2t1WldVd0hRWURWUjBPQkJZRUZPVGRkSG5BOXJKdGJMd2hCTnluMHhaVFFHQ01NR0VHQ0NzR0FRVUZCd0VEQkZVd1V6QlJCZ1lFQUk1R0FRVXdSekJGRmo5b2RIUndjem92TDNOckxtVmxMMlZ1TDNKbGNHOXphWFJ2Y25rdlkyOXVaR2wwYVc5dWN5MW1iM0l0ZFhObExXOW1MV05sY25ScFptbGpZWFJsY3k4VEFrVk9NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREJEQWZCZ05WSFNNRUdEQVdnQlRBaEprcHhFNmZPd0kwOXBuaENsWUFDQ2srZXpCekJnZ3JCZ0VGQlFjQkFRUm5NR1V3TEFZSUt3WUJCUVVITUFHR0lHaDBkSEE2THk5aGFXRXVaR1Z0Ynk1emF5NWxaUzlsYzNSbGFXUXlNREU0TURVR0NDc0dBUVVGQnpBQ2hpbG9kSFJ3T2k4dll5NXpheTVsWlM5VVpYTjBYMjltWDBWVFZFVkpSREl3TVRndVpHVnlMbU55ZERBS0JnZ3Foa2pPUFFRREJBT0Jpd0F3Z1ljQ1FnSFlFbGtYNHZuODIxSlI0MWFrSS9scGV4Q25KRlVmNEdpT01iVGZ6QXhwWm1hMzMzUjhMTnJtSTR6YnpEcDAzaHZNVHpINDlnMWpjYkduYUNjYmJvUzhEQUpCT2JlblVwKytMNVZxbGRId0tBcHM2MW5NNFYrVGlMcUQwaklMblR6bCtwVitMZXhOTDN1R3pVZnZ2RE5MSG5GOXQ2eWdpOCtCc2pzdTNpSEh5TTFoYUtNPSJdfQ.eyJhdWQiOlsiaHR0cHM6Ly9yaWEuZWUiLCJ1cm46Y2VydDpzaGEtMjU2OjZmMGRmMjQ0ZTRhODU2Yjk0YjNiM2I0NzU4MmEwYTUxYTMyZDY3NGRiYzcxMDcyMTFlZDIzZDRiZWM2ZDljNzIiXSwiaXNzIjoid2ViLWVpZCBhcHAgMS4wLjIrMCIsIm5vbmNlIjoiMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEifQ.bICTrRYMbuHLb59ch6dVJIMB1c3046CX-G9Tb3G_d9dA9gOup4Z-n_GAaVas9MAoj7P6NM0Usal_JW3_PFGfRYF0Ji79a_vhAUCsLkqp6JhnSlnv4MJvN5cYef24s4aP";
12+
1013
public const string Corrupted =
1114
"e1yJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsIng1YyI6WyJNSUlFQXpDQ0EyV2dBd0lCQWdJUU9Xa0JXWE5ESm0xYnlGZDNYc1drdmpBS0JnZ3Foa2pPUFFRREJEQmdNUXN3Q1FZRFZRUUdFd0pGUlRFYk1Ca0dBMVVFQ2d3U1Uwc2dTVVFnVTI5c2RYUnBiMjV6SUVGVE1SY3dGUVlEVlFSaERBNU9WRkpGUlMweE1EYzBOekF4TXpFYk1Ca0dBMVVFQXd3U1ZFVlRWQ0J2WmlCRlUxUkZTVVF5TURFNE1CNFhEVEU0TVRBeE9EQTVOVEEwTjFvWERUSXpNVEF4TnpJeE5UazFPVm93ZnpFTE1Ba0dBMVVFQmhNQ1JVVXhLakFvQmdOVkJBTU1JVXJEbFVWUFVrY3NTa0ZCU3kxTFVrbFRWRXBCVGl3ek9EQXdNVEE0TlRjeE9ERVFNQTRHQTFVRUJBd0hTc09WUlU5U1J6RVdNQlFHQTFVRUtnd05Ta0ZCU3kxTFVrbFRWRXBCVGpFYU1CZ0dBMVVFQlJNUlVFNVBSVVV0TXpnd01ERXdPRFUzTVRnd2RqQVFCZ2NxaGtqT1BRSUJCZ1VyZ1FRQUlnTmlBQVI1azFsWHp2U2VJOU8vMXMxcFp2amhFVzhuSXRKb0cwRUJGeG1MRVk2UzdraTF2RjJRM1RFRHg2ZE56dEkxWHR4OTZjczhyNHpZVHdkaVFvRGc3azNkaVV1UjluVFdHeFFFTU8xRkRvNFk5ZkFtaVBHV1QrK0d1T1ZvWlFZM1h4aWpnZ0hETUlJQnZ6QUpCZ05WSFJNRUFqQUFNQTRHQTFVZER3RUIvd1FFQXdJRGlEQkhCZ05WSFNBRVFEQStNRElHQ3lzR0FRUUJnNUVoQVFJQk1DTXdJUVlJS3dZQkJRVUhBZ0VXRldoMGRIQnpPaTh2ZDNkM0xuTnJMbVZsTDBOUVV6QUlCZ1lFQUk5NkFRSXdId1lEVlIwUkJCZ3dGb0VVTXpnd01ERXdPRFUzTVRoQVpXVnpkR2t1WldVd0hRWURWUjBPQkJZRUZPUXN2VFFKRUJWTU1TbWh5Wlg1YmliWUp1YkFNR0VHQ0NzR0FRVUZCd0VEQkZVd1V6QlJCZ1lFQUk1R0FRVXdSekJGRmo5b2RIUndjem92TDNOckxtVmxMMlZ1TDNKbGNHOXphWFJ2Y25rdlkyOXVaR2wwYVc5dWN5MW1iM0l0ZFhObExXOW1MV05sY25ScFptbGpZWFJsY3k4VEFrVk9NQ0FHQTFVZEpRRUIvd1FXTUJRR0NDc0dBUVVGQndNQ0JnZ3JCZ0VGQlFjREJEQWZCZ05WSFNNRUdEQVdnQlRBaEprcHhFNmZPd0kwOXBuaENsWUFDQ2srZXpCekJnZ3JCZ0VGQlFjQkFRUm5NR1V3TEFZSUt3WUJCUVVITUFHR0lHaDBkSEE2THk5aGFXRXVaR1Z0Ynk1emF5NWxaUzlsYzNSbGFXUXlNREU0TURVR0NDc0dBUVVGQnpBQ2hpbG9kSFJ3T2k4dll5NXpheTVsWlM5VVpYTjBYMjltWDBWVFZFVkpSREl3TVRndVpHVnlMbU55ZERBS0JnZ3Foa2pPUFFRREJBT0Jpd0F3Z1ljQ1FnSDFVc21NZHRMWnRpNTFGcTJRUjR3VWtBd3BzbmhzQlYySFFxVVhGWUJKN0VYbkxDa2FYamRaS2tIcEFCZk0wUUV4N1VVaGFJNGk1M2ppSjdFMVk3V09BQUpCRFg0ejYxcG5pSEphcEkxYmtNSWlKUS90aTdoYThmZEpTTVNwQWRzNUN5SEl5SGtReldsVnk4NmY5bUE3RXUzb1JPLzFxK2VGVXpEYk5OM1Z2eTdnUVdRPSJdfQ.eyJhdWQiOlsiaHR0cHM6Ly9yaWEuZWUiLCJ1cm46Y2VydDpzaGEtMjU2OjZmMGRmMjQ0ZTRhODU2Yjk0YjNiM2I0NzU4MmEwYTUxYTMyZDY3NGRiYzcxMDcyMTFlZDIzZDRiZWM2ZDljNzIiXSwiZXhwIjoiMTU4Njg3MTE2OSIsImlhdCI6IjE1ODY4NzA4NjkiLCJpc3MiOiJ3ZWItZWlkIGFwcCB2MC45LjAtMS1nZTZlODlmYSIsIm5vbmNlIjoiMTIzNDU2NzgxMjM0NTY3ODEyMzQ1Njc4MTIzNDU2NzgiLCJzdWIiOiJKw5VFT1JHLEpBQUstS1JJU1RKQU4sMzgwMDEwODU3MTgif1Q.0Y5CdMiSZ14rOnd7sbp-XeBQ7qrJVd21yTmAbiRnzAXtwqW8ZROg4jL4J7bpQ2fwyUz4-dVwLoVRVnxfJY82b8NXuxXrDb-8MXXmVYrMW0q0kPbEzqFbEnPYHjNnKAN0";
1215

src/WebEid.Security.Tests/Validator/AuthTokenParserTests.cs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
namespace WebEid.Security.Tests.Validator
22
{
3-
using System;
43
using Exceptions;
54
using NUnit.Framework;
65
using Security.Validator;
@@ -9,12 +8,10 @@ namespace WebEid.Security.Tests.Validator
98
[TestFixture]
109
public class AuthTokenParserTests
1110
{
12-
private readonly TimeSpan allowedClockSkew = TimeSpan.FromMinutes(3);
13-
1411
[Test]
1512
public void PopulateDataFromClaimsFillsCorrectDataAndValidationDoesNotFailFromValidToken()
1613
{
17-
var parser = new AuthTokenParser(Tokens.SignedTest, this.allowedClockSkew, null);
14+
var parser = new AuthTokenParser(Tokens.SignedTest, null);
1815
var data = parser.ParseHeaderFromTokenString();
1916
parser.ParseClaims();
2017
parser.PopulateDataFromClaims(data);
@@ -32,43 +29,43 @@ public void PopulateDataFromClaimsFillsCorrectDataAndValidationDoesNotFailFromVa
3229
[Test]
3330
public void ParseHeaderFromTokenStringWithMissingX5CFieldThrowsTokenParseException()
3431
{
35-
var parser = new AuthTokenParser(Tokens.X5CMissing, this.allowedClockSkew, null);
32+
var parser = new AuthTokenParser(Tokens.X5CMissing, null);
3633
Assert.Throws<TokenParseException>(() => parser.ParseHeaderFromTokenString());
3734
}
3835

3936
[Test]
4037
public void ParseHeaderFromTokenStringWithIncorrectX5CValueThrowsTokenParseException()
4138
{
42-
var parser = new AuthTokenParser(Tokens.X5CNotString, this.allowedClockSkew, null);
39+
var parser = new AuthTokenParser(Tokens.X5CNotString, null);
4340
Assert.Throws<TokenParseException>(() => parser.ParseHeaderFromTokenString());
4441
}
4542

4643
[Test]
4744
public void ParseHeaderFromTokenStringWithIncorrectX5CListValueThrowsTokenParseException()
4845
{
49-
var parser = new AuthTokenParser(Tokens.X5CNotArray, this.allowedClockSkew, null);
46+
var parser = new AuthTokenParser(Tokens.X5CNotArray, null);
5047
Assert.Throws<TokenParseException>(() => parser.ParseHeaderFromTokenString());
5148
}
5249

5350
[Test]
5451
public void ParseHeaderFromTokenStringWithX5CEmptyValueThrowsTokenParseException()
5552
{
56-
var parser = new AuthTokenParser(Tokens.X5CEmpty, this.allowedClockSkew, null);
53+
var parser = new AuthTokenParser(Tokens.X5CEmpty, null);
5754
Assert.Throws<TokenParseException>(() => parser.ParseHeaderFromTokenString());
5855
}
5956

6057
[Test]
61-
public void ValidateRsaTokenSignatureThrowsTokenExpiredException()
58+
public void JwtWithoutDateFieldsDoesNotThrow()
6259
{
63-
var parser = new AuthTokenParser(Tokens.TokenCertRsa, this.allowedClockSkew, null);
60+
var parser = new AuthTokenParser(Tokens.MinimalFormat, null);
6461
var validatorData = parser.ParseHeaderFromTokenString();
65-
Assert.Throws<TokenExpiredException>(() => parser.ValidateTokenSignature(validatorData.SubjectCertificate));
62+
Assert.DoesNotThrow(() => parser.ValidateTokenSignature(validatorData.SubjectCertificate));
6663
}
6764

6865
[Test]
6966
public void ParseHeaderFromTokenStringWithInvalidX5CCertificateThrowsTokenParseException()
7067
{
71-
var parser = new AuthTokenParser(Tokens.X5CInvalidCertificate, this.allowedClockSkew, null);
68+
var parser = new AuthTokenParser(Tokens.X5CInvalidCertificate, null);
7269
Assert.Throws<TokenParseException>(() => parser.ParseHeaderFromTokenString());
7370
}
7471
}

src/WebEid.Security.Tests/Validator/AuthTokenValidationConfigurationTests.cs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -78,23 +78,6 @@ public void AuthTokenValidationConfigurationWithZeroOcspRequestTimeoutThrowsArgu
7878
}
7979
}
8080

81-
[Test]
82-
public void AuthTokenValidationConfigurationWithZeroAllowedClientClockSkewThrowsArgumentOutOfRangeException()
83-
{
84-
using (var cache = new MemoryCache<DateTime>())
85-
{
86-
var configuration = new AuthTokenValidationConfiguration
87-
{
88-
SiteOrigin = new Uri("https://valid", UriKind.RelativeOrAbsolute),
89-
NonceCache = cache
90-
};
91-
configuration.TrustedCaCertificates.Add(new X509Certificate2());
92-
configuration.AllowedClientClockSkew = TimeSpan.Zero;
93-
Assert.Throws<ArgumentOutOfRangeException>(() => configuration.Validate())
94-
.WithMessage("Allowed client clock skew must be greater than zero (Parameter 'duration')");
95-
}
96-
}
97-
9881
[Test]
9982
public void AuthTokenValidationConfigurationWithCorrectDataDoesNotThrowException()
10083
{
@@ -122,7 +105,6 @@ public void AuthTokenValidationConfigurationCopyCopesAllData()
122105
NonceCache = cache
123106
};
124107
configuration.OcspRequestTimeout = TimeSpan.FromMinutes(1);
125-
configuration.AllowedClientClockSkew = TimeSpan.FromMinutes(1);
126108
configuration.SiteCertificateSha256Fingerprint = "fingerprint";
127109
configuration.TrustedCaCertificates.Add(new X509Certificate2(Certificates.GetTestEsteid2015Ca()));
128110
configuration.TrustedCaCertificates.Add(new X509Certificate2(Certificates.GetTestEsteid2018Ca()));

src/WebEid.Security.Tests/Validator/AuthTokenValidatorClockSkewTests.cs

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/WebEid.Security/Validator/AuthTokenParser.cs

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,17 @@ namespace WebEid.Security.Validator
2020
public class AuthTokenParser
2121
{
2222
private readonly string authToken;
23-
private readonly TimeSpan allowedClockSkew;
2423
private readonly ILogger logger;
2524
private IEnumerable<Claim> claims;
2625

2726
/// <summary>
2827
/// Creates an instance of AuthTokenParser
2928
/// </summary>
3029
/// <param name="authToken">the Web eID authentication token with signature</param>
31-
/// <param name="allowedClockSkew">the tolerated client computer clock skew when verifying the token <code>exp</code>field</param>
3230
/// <param name="logger">logger instance</param>
33-
public AuthTokenParser(string authToken, TimeSpan allowedClockSkew, ILogger logger)
31+
public AuthTokenParser(string authToken, ILogger logger)
3432
{
3533
this.authToken = authToken;
36-
this.allowedClockSkew = allowedClockSkew;
3734
this.logger = logger;
3835
}
3936

@@ -81,7 +78,7 @@ internal AuthTokenValidatorData ParseHeaderFromTokenString()
8178

8279
internal void ValidateTokenSignature(X509Certificate certificate)
8380
{
84-
ValidateTokenSignature(this.authToken, certificate, this.allowedClockSkew);
81+
ValidateTokenSignature(this.authToken, certificate);
8582
}
8683

8784
/// <summary>
@@ -91,8 +88,7 @@ internal void ValidateTokenSignature(X509Certificate certificate)
9188
/// <param name="certificate">User certificate from x5c field of JWT token</param>
9289
/// <param name="allowedClockSkew"></param>
9390
private static void ValidateTokenSignature(string authToken,
94-
X509Certificate certificate,
95-
TimeSpan allowedClockSkew)
91+
X509Certificate certificate)
9692
{
9793
try
9894
{
@@ -102,18 +98,7 @@ private static void ValidateTokenSignature(string authToken,
10298
// Validate only issuer signing key
10399
var validationParameters = new TokenValidationParameters()
104100
{
105-
ClockSkew = allowedClockSkew,
106-
ValidateLifetime = true,
107-
LifetimeValidator = (notBefore, expires, securityToken, tokenValidationParameters) =>
108-
{
109-
var clonedParameters = tokenValidationParameters.Clone();
110-
clonedParameters.LifetimeValidator = null;
111-
Microsoft.IdentityModel.Tokens.Validators.ValidateLifetime(notBefore,
112-
expires,
113-
securityToken,
114-
clonedParameters);
115-
return true;
116-
},
101+
ValidateLifetime = false,
117102
ValidateAudience = false,
118103
ValidateActor = false,
119104
ValidateTokenReplay = false,

src/WebEid.Security/Validator/AuthTokenValidationConfiguration.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ private AuthTokenValidationConfiguration(AuthTokenValidationConfiguration other)
2424
this.TrustedCaCertificates = new List<X509Certificate2>(other.TrustedCaCertificates);
2525
this.IsUserCertificateRevocationCheckWithOcspEnabled = other.IsUserCertificateRevocationCheckWithOcspEnabled;
2626
this.OcspRequestTimeout = other.OcspRequestTimeout;
27-
this.AllowedClientClockSkew = other.AllowedClientClockSkew;
2827
this.DesignatedOcspServiceConfiguration = other.DesignatedOcspServiceConfiguration;
2928
this.IsSiteCertificateFingerprintValidationEnabled = other.IsSiteCertificateFingerprintValidationEnabled;
3029
this.SiteCertificateSha256Fingerprint = other.SiteCertificateSha256Fingerprint;
@@ -42,8 +41,6 @@ private AuthTokenValidationConfiguration(AuthTokenValidationConfiguration other)
4241

4342
public TimeSpan OcspRequestTimeout { get; set; } = TimeSpan.FromSeconds(5);
4443

45-
public TimeSpan AllowedClientClockSkew { get; set; } = TimeSpan.FromMinutes(3);
46-
4744
public bool IsSiteCertificateFingerprintValidationEnabled { get; private set; }
4845

4946
public DesignatedOcspServiceConfiguration DesignatedOcspServiceConfiguration { get; internal set; }
@@ -88,7 +85,6 @@ public void Validate()
8885
}
8986

9087
RequirePositiveDuration(this.OcspRequestTimeout, "OCSP request timeout");
91-
RequirePositiveDuration(this.AllowedClientClockSkew, "Allowed client clock skew");
9288
if (this.IsSiteCertificateFingerprintValidationEnabled && this.siteCertificateSha256Fingerprint == null)
9389
{
9490
throw new ArgumentException("Certificate fingerprint must not be null when site certificate fingerprint validation is enabled");
@@ -124,7 +120,6 @@ public bool Equals(AuthTokenValidationConfiguration other)
124120
this.IsUserCertificateRevocationCheckWithOcspEnabled.Equals(other
125121
.IsUserCertificateRevocationCheckWithOcspEnabled) &&
126122
this.OcspRequestTimeout.Equals(other.OcspRequestTimeout) &&
127-
this.AllowedClientClockSkew.Equals(other.AllowedClientClockSkew) &&
128123
this.IsSiteCertificateFingerprintValidationEnabled.Equals(other
129124
.IsSiteCertificateFingerprintValidationEnabled) &&
130125
Enumerable.SequenceEqual(this.DisallowedSubjectCertificatePolicies,

src/WebEid.Security/Validator/AuthTokenValidator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public async Task<X509Certificate> Validate(string authToken)
7373
try
7474
{
7575
this.logger?.LogInformation("Starting token parsing and validation");
76-
var authTokenParser = new AuthTokenParser(authToken, this.configuration.AllowedClientClockSkew, this.logger);
76+
var authTokenParser = new AuthTokenParser(authToken, this.logger);
7777
var actualTokenData = authTokenParser.ParseHeaderFromTokenString();
7878

7979
await this.simpleSubjectCertificateValidators.ExecuteFor(actualTokenData);

0 commit comments

Comments
 (0)