Skip to content

Commit 0b96c1f

Browse files
committed
Change data time format from standard "o" to "yyyy-MM-ddTHH:mm:ss.fffZ". According to the SAML 2.0 specification is should only be 3 digits 'SAML system entities SHOULD NOT rely on time resolution finer than milliseconds.'
1 parent 0a2d418 commit 0b96c1f

File tree

7 files changed

+19
-16
lines changed

7 files changed

+19
-16
lines changed

src/ITfoxtec.Identity.Saml2.Mvc/ITfoxtec.Identity.Saml2.Mvc.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
<PackageTags>SAML SAML 2.0 SAML2.0 SAML2 SAML 2 SAML-P SAMLP SSO Identity Provider (IdP) and Relying Party (RP) Authentication Metadata OIOSAML NemLog-in ASP.NET MVC</PackageTags>
1515
<NeutralLanguage>en-US</NeutralLanguage>
1616
<PackageIconUrl>https://itfoxtec.com/favicon.ico</PackageIconUrl>
17-
<AssemblyVersion>4.4.1.0</AssemblyVersion>
18-
<FileVersion>4.4.1.0</FileVersion>
17+
<AssemblyVersion>4.5.0.0</AssemblyVersion>
18+
<FileVersion>4.5.0.0</FileVersion>
1919
<Copyright>Copyright © 2021</Copyright>
20-
<Version>4.4.1</Version>
20+
<Version>4.5.0</Version>
2121
<SignAssembly>true</SignAssembly>
2222
<AssemblyOriginatorKeyFile>ITfoxtec.SAML2.snk</AssemblyOriginatorKeyFile>
2323
<DelaySign>false</DelaySign>

src/ITfoxtec.Identity.Saml2.MvcCore/ITfoxtec.Identity.Saml2.MvcCore.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
<PackageTags>SAML SAML 2.0 SAML2.0 SAML2 SAML 2 SAML-P SAMLP SSO Identity Provider (IdP) Relying Party (RP) Authentication Metadata OIOSAML NemLog-in ASP.NET MVC Core</PackageTags>
1717
<NeutralLanguage>en-US</NeutralLanguage>
1818
<PackageIconUrl>https://itfoxtec.com/favicon.ico</PackageIconUrl>
19-
<AssemblyVersion>4.4.1.0</AssemblyVersion>
20-
<FileVersion>4.4.1.0</FileVersion>
19+
<AssemblyVersion>4.5.0.0</AssemblyVersion>
20+
<FileVersion>4.5.0.0</FileVersion>
2121
<Copyright>Copyright © 2021</Copyright>
22-
<Version>4.4.1</Version>
22+
<Version>4.5.0</Version>
2323
<SignAssembly>true</SignAssembly>
2424
<AssemblyOriginatorKeyFile>ITfoxtec.SAML2.snk</AssemblyOriginatorKeyFile>
2525
<DelaySign>false</DelaySign>

src/ITfoxtec.Identity.Saml2/ITfoxtec.Identity.Saml2.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ Tested for compliance with AD FS, Azure AD and Azure AD B2C. Furthermore, the Da
2323
<PackageTags>SAML SAML 2.0 SAML2.0 SAML2 SAML 2 SAML-P SAMLP SSO Identity Provider (IdP) Relying Party (RP) Authentication Metadata OIOSAML NemLog-in</PackageTags>
2424
<NeutralLanguage>en-US</NeutralLanguage>
2525
<PackageIconUrl>https://itfoxtec.com/favicon.ico</PackageIconUrl>
26-
<AssemblyVersion>4.4.1.0</AssemblyVersion>
27-
<FileVersion>4.4.1.0</FileVersion>
26+
<AssemblyVersion>4.5.0.0</AssemblyVersion>
27+
<FileVersion>4.5.0.0</FileVersion>
2828
<Copyright>Copyright © 2021</Copyright>
29-
<Version>4.4.1</Version>
29+
<Version>4.5.0</Version>
3030
<SignAssembly>true</SignAssembly>
3131
<AssemblyOriginatorKeyFile>ITfoxtec.SAML2.snk</AssemblyOriginatorKeyFile>
3232
<DelaySign>false</DelaySign>

src/ITfoxtec.Identity.Saml2/Request/Saml2LogoutRequest.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using ITfoxtec.Identity.Saml2.Claims;
2-
using Schemas = ITfoxtec.Identity.Saml2.Schemas;
32
using System;
43
using System.Collections.Generic;
54
using System.Globalization;
@@ -94,7 +93,7 @@ protected override IEnumerable<XObject> GetXContent()
9493
{
9594
if (NotOnOrAfter.HasValue)
9695
{
97-
yield return new XAttribute(Schemas.Saml2Constants.Message.NotOnOrAfter, NotOnOrAfter.Value.UtcDateTime.ToString("o", CultureInfo.InvariantCulture));
96+
yield return new XAttribute(Schemas.Saml2Constants.Message.NotOnOrAfter, NotOnOrAfter.Value.UtcDateTime.ToString(Schemas.Saml2Constants.DateTimeFormat, CultureInfo.InvariantCulture));
9897
}
9998

10099
if (Reason != null)

src/ITfoxtec.Identity.Saml2/Request/Saml2Request.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
using ITfoxtec.Identity.Saml2.Configuration;
22
using ITfoxtec.Identity.Saml2.Cryptography;
3-
using Schemas = ITfoxtec.Identity.Saml2.Schemas;
43
using System;
54
using System.Collections.Generic;
6-
using System.Diagnostics;
75
using System.Globalization;
86
using System.Security.Cryptography.X509Certificates;
97
using System.Xml;
@@ -137,7 +135,7 @@ protected virtual IEnumerable<XObject> GetXContent()
137135
yield return new XAttribute(Schemas.Saml2Constants.AssertionNamespaceNameX, Schemas.Saml2Constants.AssertionNamespace.OriginalString);
138136
yield return new XAttribute(Schemas.Saml2Constants.Message.Id, IdAsString);
139137
yield return new XAttribute(Schemas.Saml2Constants.Message.Version, Version);
140-
yield return new XAttribute(Schemas.Saml2Constants.Message.IssueInstant, IssueInstant.UtcDateTime.ToString("o", CultureInfo.InvariantCulture));
138+
yield return new XAttribute(Schemas.Saml2Constants.Message.IssueInstant, IssueInstant.UtcDateTime.ToString(Schemas.Saml2Constants.DateTimeFormat, CultureInfo.InvariantCulture));
141139

142140
if (!string.IsNullOrWhiteSpace(Consent))
143141
{

src/ITfoxtec.Identity.Saml2/Schemas/Metadata/EntityDescriptor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ protected IEnumerable<XObject> GetXContent()
119119
yield return new XAttribute(Saml2MetadataConstants.Message.Id, IdAsString);
120120
if (ValidUntil.HasValue)
121121
{
122-
yield return new XAttribute(Saml2MetadataConstants.Message.ValidUntil, DateTimeOffset.UtcNow.AddDays(ValidUntil.Value).UtcDateTime.ToString("o", CultureInfo.InvariantCulture));
122+
yield return new XAttribute(Saml2MetadataConstants.Message.ValidUntil, DateTimeOffset.UtcNow.AddDays(ValidUntil.Value).UtcDateTime.ToString(Saml2Constants.DateTimeFormat, CultureInfo.InvariantCulture));
123123
}
124124
yield return new XAttribute(Saml2MetadataConstants.MetadataNamespaceNameX, Saml2MetadataConstants.MetadataNamespace);
125125

src/ITfoxtec.Identity.Saml2/Schemas/Saml2Constants.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.IdentityModel.Tokens;
32
using System.Xml.Linq;
43

54
namespace ITfoxtec.Identity.Saml2.Schemas
@@ -16,6 +15,13 @@ public static class Saml2Constants
1615
/// </summary>
1716
public const string VersionNumber = "2.0";
1817

18+
/// <summary>
19+
/// All SAML time values have the type xs:dateTime, which is built in to the W3C XML Schema Datatypes specification[Schema2], and MUST be expressed in UTC form,
20+
/// with no time zone component.
21+
/// SAML system entities SHOULD NOT rely on time resolution finer than milliseconds.Implementations MUST NOT generate time instants that specify leap seconds.
22+
/// </summary>
23+
public const string DateTimeFormat = "yyyy-MM-ddTHH:mm:ss.fffZ";
24+
1925
/// <summary>
2026
/// Saml2 Bearer token.
2127
/// </summary>

0 commit comments

Comments
 (0)