Skip to content

Commit 633e7d2

Browse files
committed
Migrate to IdentityModel 5.2
1 parent c32abe2 commit 633e7d2

File tree

49 files changed

+363
-178
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+363
-178
lines changed

build/Sakefile.shade

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ var SHIP='${Version(4, 0, 0, "alpha1")}'
55
var DEV='${Version(0, 31, 0, "pre")}'
66
set FINAL_MILESTONE='${false}'
77

8-
var AZUREAD_JWT_SUFFIX=''
9-
var AZUREAD_EXT_SUFFIX=''
8+
var AZUREAD_JWT_SUFFIX='.406020025-pre'
9+
var AZUREAD_EXT_SUFFIX='.406020025-pre'
1010
var VERSION='${SHIP.VERSION}'
1111
var FULL_VERSION='${SHIP.FULL_VERSION}'
1212
var EULA='https://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm'

src/Microsoft.Owin.Security.ActiveDirectory/ActiveDirectoryFederationServicesBearerAuthenticationExtensions.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
5-
using System.Globalization;
65
using System.Linq;
76
using Microsoft.Owin.Security.ActiveDirectory;
87
using Microsoft.Owin.Security.Jwt;

src/Microsoft.Owin.Security.ActiveDirectory/ActiveDirectoryFederationServicesBearerAuthenticationOptions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
5-
using System.IdentityModel.Tokens;
5+
using System.IdentityModel.Tokens.Jwt;
66
using System.Net.Http;
7-
7+
using Microsoft.IdentityModel.Tokens;
88
using Microsoft.Owin.Security.OAuth;
99

1010
namespace Microsoft.Owin.Security.ActiveDirectory

src/Microsoft.Owin.Security.ActiveDirectory/Microsoft.Owin.Security.ActiveDirectory.csproj

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,34 @@
4040
<StartupObject />
4141
</PropertyGroup>
4242
<ItemGroup>
43+
<Reference Include="Microsoft.IdentityModel.Logging, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
44+
<HintPath>..\..\packages\Microsoft.IdentityModel.Logging.5.2.0.406020025-pre\lib\net451\Microsoft.IdentityModel.Logging.dll</HintPath>
45+
<Private>True</Private>
46+
</Reference>
47+
<Reference Include="Microsoft.IdentityModel.Protocols, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
48+
<HintPath>..\..\packages\Microsoft.IdentityModel.Protocols.5.2.0.406020025-pre\lib\net451\Microsoft.IdentityModel.Protocols.dll</HintPath>
49+
<Private>True</Private>
50+
</Reference>
51+
<Reference Include="Microsoft.IdentityModel.Protocols.WsFederation, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
52+
<HintPath>..\..\packages\Microsoft.IdentityModel.Protocols.WsFederation.5.2.0.406020025-pre\lib\net451\Microsoft.IdentityModel.Protocols.WsFederation.dll</HintPath>
53+
<Private>True</Private>
54+
</Reference>
55+
<Reference Include="Microsoft.IdentityModel.Tokens, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
56+
<HintPath>..\..\packages\Microsoft.IdentityModel.Tokens.5.2.0.406020025-pre\lib\net451\Microsoft.IdentityModel.Tokens.dll</HintPath>
57+
<Private>True</Private>
58+
</Reference>
59+
<Reference Include="Microsoft.IdentityModel.Tokens.Saml, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
60+
<HintPath>..\..\packages\Microsoft.IdentityModel.Tokens.Saml.5.2.0.406020025-pre\lib\net451\Microsoft.IdentityModel.Tokens.Saml.dll</HintPath>
61+
<Private>True</Private>
62+
</Reference>
63+
<Reference Include="Microsoft.IdentityModel.Xml, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
64+
<HintPath>..\..\packages\Microsoft.IdentityModel.Xml.5.2.0.406020025-pre\lib\net451\Microsoft.IdentityModel.Xml.dll</HintPath>
65+
<Private>True</Private>
66+
</Reference>
67+
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
68+
<HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
69+
<Private>True</Private>
70+
</Reference>
4371
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
4472
<SpecificVersion>False</SpecificVersion>
4573
<HintPath>..\..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
@@ -48,9 +76,9 @@
4876
<Reference Include="System.Core" />
4977
<Reference Include="Microsoft.CSharp" />
5078
<Reference Include="System.IdentityModel" />
51-
<Reference Include="System.IdentityModel.Tokens.Jwt, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
52-
<SpecificVersion>False</SpecificVersion>
53-
<HintPath>..\..\packages\System.IdentityModel.Tokens.Jwt.4.0.0\lib\net45\System.IdentityModel.Tokens.Jwt.dll</HintPath>
79+
<Reference Include="System.IdentityModel.Tokens.Jwt, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
80+
<HintPath>..\..\packages\System.IdentityModel.Tokens.Jwt.5.2.0.406020025-pre\lib\net451\System.IdentityModel.Tokens.Jwt.dll</HintPath>
81+
<Private>True</Private>
5482
</Reference>
5583
<Reference Include="System.Net.Http" />
5684
<Reference Include="System.Net.Http.WebRequest" />

src/Microsoft.Owin.Security.ActiveDirectory/Microsoft.Owin.Security.ActiveDirectory.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<dependency id="Microsoft.Owin.Security" version="$version$" />
2222
<dependency id="Microsoft.Owin.Security.OAuth" version="$version$" />
2323
<dependency id="Microsoft.Owin.Security.Jwt" version="$version$" />
24-
<dependency id="System.IdentityModel.Tokens.Jwt" version="4.0.0$azureAdJwtSuffix$" />
24+
<dependency id="System.IdentityModel.Tokens.Jwt" version="5.2.0$azureAdJwtSuffix$" />
2525
</dependencies>
2626
</metadata>
2727
<files>

src/Microsoft.Owin.Security.ActiveDirectory/WindowsAzureActiveDirectoryBearerAuthenticationOptions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
5-
using System.IdentityModel.Tokens;
5+
using System.IdentityModel.Tokens.Jwt;
66
using System.Net.Http;
7-
7+
using Microsoft.IdentityModel.Tokens;
88
using Microsoft.Owin.Security.OAuth;
99

1010
namespace Microsoft.Owin.Security.ActiveDirectory

src/Microsoft.Owin.Security.ActiveDirectory/WsFedCachingSecurityTokenProvider.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
using System;
55
using System.Collections.Generic;
66
using System.Diagnostics.CodeAnalysis;
7-
using System.IdentityModel.Tokens;
87
using System.Net.Http;
98
using System.Threading;
9+
using System.IdentityModel.Tokens;
1010
using Microsoft.Owin.Security.Jwt;
1111

1212
namespace Microsoft.Owin.Security.ActiveDirectory
@@ -81,6 +81,7 @@ public IEnumerable<SecurityToken> SecurityTokens
8181
}
8282
}
8383

84+
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "Can't throw exceptions on a background thread.")]
8485
private void RefreshMetadata()
8586
{
8687
if (_syncAfter >= DateTimeOffset.UtcNow)

src/Microsoft.Owin.Security.ActiveDirectory/WsFedMetadataRetriever.cs

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,13 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System;
5-
using System.Collections.Generic;
6-
using System.IdentityModel.Metadata;
5+
using System.Collections.ObjectModel;
76
using System.IdentityModel.Tokens;
87
using System.IO;
9-
using System.Linq;
108
using System.Net.Http;
11-
using System.Security.Cryptography.X509Certificates;
12-
using System.ServiceModel.Security;
139
using System.Xml;
10+
using Microsoft.IdentityModel.Protocols.WsFederation;
11+
using Microsoft.IdentityModel.Tokens;
1412

1513
namespace Microsoft.Owin.Security.ActiveDirectory
1614
{
@@ -23,9 +21,6 @@ internal static class WsFedMetadataRetriever
2321

2422
public static IssuerSigningKeys GetSigningKeys(string metadataEndpoint, TimeSpan backchannelTimeout, HttpMessageHandler backchannelHttpHandler)
2523
{
26-
string issuer = string.Empty;
27-
var tokens = new List<X509SecurityToken>();
28-
2924
using (var metadataRequest = new HttpClient(backchannelHttpHandler, false))
3025
{
3126
metadataRequest.Timeout = backchannelTimeout;
@@ -35,32 +30,27 @@ public static IssuerSigningKeys GetSigningKeys(string metadataEndpoint, TimeSpan
3530
Stream metadataStream = metadataResponse.Content.ReadAsStreamAsync().Result;
3631
using (XmlReader metaDataReader = XmlReader.Create(metadataStream, SafeSettings))
3732
{
38-
var serializer = new MetadataSerializer { CertificateValidationMode = X509CertificateValidationMode.None };
33+
var serializer = new WsFederationMetadataSerializer();
34+
var wsFederationConfiguration = serializer.ReadMetadata(metaDataReader);
35+
var x509SecurityTokens = new Collection<X509SecurityToken>();
3936

40-
MetadataBase metadata = serializer.ReadMetadata(metaDataReader);
41-
var entityDescriptor = (EntityDescriptor)metadata;
37+
var issuerSigningKeys = new IssuerSigningKeys();
38+
issuerSigningKeys.Issuer = wsFederationConfiguration.Issuer;
4239

43-
if (!string.IsNullOrWhiteSpace(entityDescriptor.EntityId.Id))
40+
foreach (var key in wsFederationConfiguration.SigningKeys)
4441
{
45-
issuer = entityDescriptor.EntityId.Id;
46-
}
42+
var x509SecurityKey = key as X509SecurityKey;
4743

48-
SecurityTokenServiceDescriptor stsd = entityDescriptor.RoleDescriptors.OfType<SecurityTokenServiceDescriptor>().First();
49-
if (stsd == null)
50-
{
51-
throw new InvalidOperationException(Properties.Resources.Exception_MissingDescriptor);
44+
if (x509SecurityKey != null)
45+
{
46+
x509SecurityTokens.Add(new X509SecurityToken(x509SecurityKey.Certificate));
47+
}
5248
}
5349

54-
IEnumerable<X509RawDataKeyIdentifierClause> x509DataClauses =
55-
stsd.Keys.Where(key => key.KeyInfo != null
56-
&& (key.Use == KeyType.Signing || key.Use == KeyType.Unspecified))
57-
.Select(key => key.KeyInfo.OfType<X509RawDataKeyIdentifierClause>().First());
58-
tokens.AddRange(x509DataClauses.Select(token => new X509SecurityToken(new X509Certificate2(token.GetX509RawData()))));
50+
return new IssuerSigningKeys { Issuer = wsFederationConfiguration.Issuer, Tokens = x509SecurityTokens };
5951
}
6052
}
6153
}
62-
63-
return new IssuerSigningKeys { Issuer = issuer, Tokens = tokens };
6454
}
6555
}
6656
}
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3+
<package id="Microsoft.IdentityModel.Logging" version="5.2.0.406020025-pre" targetFramework="net451" />
4+
<package id="Microsoft.IdentityModel.Protocols" version="5.2.0.406020025-pre" targetFramework="net451" />
5+
<package id="Microsoft.IdentityModel.Protocols.WsFederation" version="5.2.0.406020025-pre" targetFramework="net451" />
6+
<package id="Microsoft.IdentityModel.Tokens" version="5.2.0.406020025-pre" targetFramework="net451" />
7+
<package id="Microsoft.IdentityModel.Tokens.Saml" version="5.2.0.406020025-pre" targetFramework="net451" />
8+
<package id="Microsoft.IdentityModel.Xml" version="5.2.0.406020025-pre" targetFramework="net451" />
9+
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net451" />
310
<package id="Owin" version="1.0" targetFramework="net45" />
4-
<package id="System.IdentityModel.Tokens.Jwt" version="4.0.0" targetFramework="net45" />
11+
<package id="System.IdentityModel.Tokens.Jwt" version="5.2.0.406020025-pre" targetFramework="net451" />
512
</packages>

src/Microsoft.Owin.Security.Facebook/Microsoft.Owin.Security.Facebook.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@
3737
<DocumentationFile>bin\Release\Microsoft.Owin.Security.Facebook.XML</DocumentationFile>
3838
</PropertyGroup>
3939
<ItemGroup>
40-
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
41-
<SpecificVersion>False</SpecificVersion>
42-
<HintPath>..\..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
40+
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
41+
<HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
42+
<Private>True</Private>
4343
</Reference>
4444
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
4545
<SpecificVersion>False</SpecificVersion>

0 commit comments

Comments
 (0)