diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml
index e8fefb8..ee357d4 100644
--- a/.github/workflows/blank.yml
+++ b/.github/workflows/blank.yml
@@ -6,7 +6,7 @@ jobs:
build:
container:
- image: mcr.microsoft.com/dotnet/core/sdk:3.0.100-disco
+ image: mcr.microsoft.com/dotnet/core/sdk:3.1.100-preview1-bionic
runs-on: ubuntu-16.04
@@ -20,39 +20,31 @@ jobs:
- name: Build Blazor-Auth0-Shared project.
run: |
dotnet build src/Blazor.Auth0.Shared
- dotnet pack src/Blazor.Auth0.Shared/Blazor.Auth0.Shared.csproj --no-build --output $HOME
- name: Build Blazor-Auth0-ClientSide project.
run: |
- dotnet restore src/Blazor.Auth0.ClientSide -s $HOME -s https://api.nuget.org/v3/index.json
- dotnet build src/Blazor.Auth0.ClientSide
- dotnet pack src/Blazor.Auth0.ClientSide/Blazor.Auth0.ClientSide.csproj --no-build --output $HOME
+ dotnet build src/Blazor.Auth0.ClientSide --source /__w/Blazor.Auth0/packages --source https://api.nuget.org/v3/index.json --configuration Release
- name: Build Blazor-Auth0-ServerSide project.
run: |
- dotnet restore src/Blazor.Auth0.ServerSide -s $HOME -s https://api.nuget.org/v3/index.json
- dotnet build src/Blazor.Auth0.ServerSide
- dotnet pack src/Blazor.Auth0.ServerSide/Blazor.Auth0.ServerSide.csproj --no-build --output $HOME
+ dotnet build src/Blazor.Auth0.ServerSide --source /__w/Blazor.Auth0/packages --source https://api.nuget.org/v3/index.json --configuration Release
- name: Build AspNetCoreHosted Example.
run: |
- dotnet restore examples/Examples.AspNetCoreHosted/Client -s $HOME -s https://api.nuget.org/v3/index.json
- dotnet build examples/Examples.AspNetCoreHosted/Server
+ dotnet build examples/Examples.AspNetCoreHosted/Server --source /__w/Blazor.Auth0/packages --source https://api.nuget.org/v3/index.json --configuration Release
- name: Build ClientSide Example.
run: |
- dotnet restore examples/Examples.ClientSide -s $HOME -s https://api.nuget.org/v3/index.json
- dotnet build examples/Examples.ClientSide
+ dotnet build examples/Examples.ClientSide --source /__w/Blazor.Auth0/packages --source https://api.nuget.org/v3/index.json --configuration Release
- name: Build ServerSide Example.
run: |
- dotnet restore examples/Examples.ServerSide -s $HOME -s https://api.nuget.org/v3/index.json
- dotnet build examples/Examples.ServerSide
+ dotnet build examples/Examples.ServerSide --source /__w/Blazor.Auth0/packages --source https://api.nuget.org/v3/index.json --configuration Release
- name: Publish Blazor-Auth0-Shared Nuget package.
diff --git a/Nuget.Config b/Nuget.Config
new file mode 100644
index 0000000..1726f28
--- /dev/null
+++ b/Nuget.Config
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 2a126bd..e2bbbaa 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
-This is a library for Blazor authentication with OIDC Authorization Code-Grant and Implicit-Grant flows, using Auth0's Universal Login and Silent Login for [Blazor](http://blazor.net) over .NET Core v3.0.0 client & server-side solutions, the idea behind this is to have an easy way of using Auth0's services in Blazor without the need of the auth0.js library.
+This is a library for Blazor authentication with OIDC Authorization Code-Grant and Implicit-Grant flows, using Auth0's Universal Login and Silent Login for [Blazor](http://blazor.net) over .Net Core 3.1.0-preview1 client & server-side solutions, the idea behind this is to have an easy way of using Auth0's services in Blazor without the need of the auth0.js library.
[![Nuget](https://img.shields.io/nuget/v/Blazor-Auth0-ServerSide?color=green&label=Nuget%3A%20Blazor-Auth0-ServerSide)](https://www.nuget.org/packages/Blazor-Auth0-ServerSide)
[![Nuget](https://img.shields.io/nuget/v/Blazor-Auth0-ClientSide?color=green&label=Nuget%3A%20Blazor-Auth0-Clientside)](https://www.nuget.org/packages/Blazor-Auth0-ClientSide)
@@ -36,12 +36,12 @@ Install via [Nuget](https://www.nuget.org/).
>Server Side
```bash
-Install-Package Blazor-Auth0-ServerSide -Version 1.0.0-Preview3
+Install-Package Blazor-Auth0-ServerSide -Version 2.0.0-Preview1
````
>Client Side
```bash
-Install-Package Blazor-Auth0-ClientSide -Version 1.0.0-Preview3
+Install-Package Blazor-Auth0-ClientSide -Version 2.0.0-Preview1
````
## Usage
@@ -134,14 +134,11 @@ Pull requests are welcome. For major changes, please open an issue first to disc
4. Push to the branch (`git push origin feature/fooBar`)
5. Create a new Pull Request
+* Especial thanks for its help to all the [contributors](https://github.com/henalbrod/Blazor.Auth0/graphs/contributors)
+
## Authors
**Henry Alberto Rodriguez** - _Initial work_ - [GitHub](https://github.com/henalbrod) - [Twitter](https://twitter.com/henalbrod) - [Linkedin](https://www.linkedin.com/in/henalbrod/)
-* Especial thanks for its contributions to:
-
-**jbomhold3** [GitHub](https://github.com/jbomhold3)
-**TopSwagCode** [GitHub](https://github.com/TopSwagCode)
-
## License
This project is licensed under the MIT License - see the [LICENSE](https://github.com/henalbrod/Blazor.Auth0/blob/master/LICENSE) file for details.
@@ -154,6 +151,17 @@ This project is licensed under the MIT License - see the [LICENSE](https://githu
## Release History
+**v2.0.0-Preview1**
+
+BREAKING CHANGES:
+
+* Upgraded to .Net Core 3.1.0-preview1
+* Server side projects upgraded to netcoreapp3.1
+* Auth0 permissions are now accesible as an any other array claim:
+```C#
+policy.RequireClaim("permissions", "permission_name")
+```
+
**v1.0.0-Preview3**
* Overall upgrade to .Net Core 3.0
diff --git a/examples/Examples.AspNetCoreHosted/Client/Examples.AspNetCoreHosted.Client.csproj b/examples/Examples.AspNetCoreHosted/Client/Examples.AspNetCoreHosted.Client.csproj
index 01bbf85..f8768b8 100644
--- a/examples/Examples.AspNetCoreHosted/Client/Examples.AspNetCoreHosted.Client.csproj
+++ b/examples/Examples.AspNetCoreHosted/Client/Examples.AspNetCoreHosted.Client.csproj
@@ -1,4 +1,4 @@
-
+
netstandard2.0
@@ -8,13 +8,26 @@
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/Examples.AspNetCoreHosted/Client/Startup.cs b/examples/Examples.AspNetCoreHosted/Client/Startup.cs
index c051eb3..ef6c8b0 100644
--- a/examples/Examples.AspNetCoreHosted/Client/Startup.cs
+++ b/examples/Examples.AspNetCoreHosted/Client/Startup.cs
@@ -14,7 +14,7 @@ public void ConfigureServices(IServiceCollection services)
options.Domain = "[Auth0_Domain]";
// Required
- options.ClientId = "[Auth0_client_Id]";
+ options.ClientId = "[Auth0_Client_Id]";
//// Required if you want to make use of Auth0's RBAC
options.Audience = "[Auth0_Audience]";
@@ -29,11 +29,11 @@ public void ConfigureServices(IServiceCollection services)
// options.SlidingExpiration = true;
});
- // Policy based authorization, learn more here: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.0
+ // Policy based authorization, learn more here: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.1
services.AddAuthorizationCore(options =>
{
- options.AddPolicy("read:weather_forecast", policy => policy.RequireClaim("read:weather_forecast"));
- options.AddPolicy("execute:increment_counter", policy => policy.RequireClaim("execute:increment_counter"));
+ options.AddPolicy("read:weather_forecast", policy => policy.RequireClaim("permissions", "read:weather_forecast"));
+ options.AddPolicy("execute:increment_counter", policy => policy.RequireClaim("permissions", "execute:increment_counter"));
});
}
diff --git a/examples/Examples.AspNetCoreHosted/Server/Examples.AspNetCoreHosted.Server.csproj b/examples/Examples.AspNetCoreHosted/Server/Examples.AspNetCoreHosted.Server.csproj
index cda137f..a097753 100644
--- a/examples/Examples.AspNetCoreHosted/Server/Examples.AspNetCoreHosted.Server.csproj
+++ b/examples/Examples.AspNetCoreHosted/Server/Examples.AspNetCoreHosted.Server.csproj
@@ -1,15 +1,15 @@
- netcoreapp3.0
+ netcoreapp3.1
7.3
- 12dacd65-df84-4051-99c4-fbc453d4c470
+ 6c2330d9-84c7-4bf5-80a9-6b48c017bbab
-
-
-
+
+
+
diff --git a/examples/Examples.AspNetCoreHosted/Server/Startup.cs b/examples/Examples.AspNetCoreHosted/Server/Startup.cs
index 5be03ea..ae0743e 100644
--- a/examples/Examples.AspNetCoreHosted/Server/Startup.cs
+++ b/examples/Examples.AspNetCoreHosted/Server/Startup.cs
@@ -40,7 +40,7 @@ public void ConfigureServices(IServiceCollection services)
services.AddAuthorizationCore(options =>
{
- options.AddPolicy("read:weather_forecast", policy => policy.RequireClaim("read:weather_forecast"));
+ options.AddPolicy("read:weather_forecast", policy => policy.RequireClaim("permissions","read:weather_forecast"));
});
services.AddResponseCompression(opts =>
@@ -62,12 +62,13 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
}
app.UseAuthentication();
- app.UseAuthorization();
app.UseStaticFiles();
app.UseClientSideBlazorFiles();
app.UseRouting();
+
+ app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
diff --git a/examples/Examples.ClientSide/Examples.ClientSide.csproj b/examples/Examples.ClientSide/Examples.ClientSide.csproj
index 3486084..5d931a7 100644
--- a/examples/Examples.ClientSide/Examples.ClientSide.csproj
+++ b/examples/Examples.ClientSide/Examples.ClientSide.csproj
@@ -8,11 +8,23 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/Examples.ClientSide/Startup.cs b/examples/Examples.ClientSide/Startup.cs
index b6da7b0..014fafa 100644
--- a/examples/Examples.ClientSide/Startup.cs
+++ b/examples/Examples.ClientSide/Startup.cs
@@ -16,7 +16,7 @@ public void ConfigureServices(IServiceCollection services)
options.Domain = "[Auth0_Domain]";
// Required
- options.ClientId = "[Auth0_client_Id]";
+ options.ClientId = "[Auth0_Client_Id]";
//// Required if you want to make use of Auth0's RBAC
options.Audience = "[Auth0_Audience]";
@@ -31,11 +31,11 @@ public void ConfigureServices(IServiceCollection services)
// options.SlidingExpiration = true;
});
- // Policy based authorization, learn more here: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.0
+ // Policy based authorization, learn more here: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.1
services.AddAuthorizationCore(options =>
{
- options.AddPolicy("read:weather_forecast", policy => policy.RequireClaim("read:weather_forecast"));
- options.AddPolicy("execute:increment_counter", policy => policy.RequireClaim("execute:increment_counter"));
+ options.AddPolicy("read:weather_forecast", policy => policy.RequireClaim("permissions", "read:weather_forecast"));
+ options.AddPolicy("execute:increment_counter", policy => policy.RequireClaim("permissions", "execute:increment_counter"));
});
}
diff --git a/examples/Examples.ServerSide/Examples.ServerSide.csproj b/examples/Examples.ServerSide/Examples.ServerSide.csproj
index 8dbb244..0dd14ce 100644
--- a/examples/Examples.ServerSide/Examples.ServerSide.csproj
+++ b/examples/Examples.ServerSide/Examples.ServerSide.csproj
@@ -1,15 +1,22 @@
- netcoreapp3.0
-
-
+ netcoreapp3.1
6c2330d9-84c7-4bf5-80a9-6b48c017bbab
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/Examples.ServerSide/Startup.cs b/examples/Examples.ServerSide/Startup.cs
index bfa88da..7cb933b 100644
--- a/examples/Examples.ServerSide/Startup.cs
+++ b/examples/Examples.ServerSide/Startup.cs
@@ -36,11 +36,11 @@ public void ConfigureServices(IServiceCollection services)
// New Blazor.Auth0 one liner intantiation
services.AddDefaultBlazorAuth0Authentication(Configuration.GetSection("Auth0").Get());
- // Policy based authorization, learn more here: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.0
- services.AddAuthorization(options =>
+ // Policy based authorization, learn more here: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.1
+ services.AddAuthorizationCore(options =>
{
- options.AddPolicy("read:weather_forecast", policy => policy.RequireClaim("read:weather_forecast"));
- options.AddPolicy("execute:increment_counter", policy => policy.RequireClaim("execute:increment_counter"));
+ options.AddPolicy("read:weather_forecast", policy => policy.RequireClaim("permissions", "read:weather_forecast"));
+ options.AddPolicy("execute:increment_counter", policy => policy.RequireClaim("permissions", "execute:increment_counter"));
});
services.AddSingleton();
diff --git a/examples/Examples.ServerSide/appsettings.json b/examples/Examples.ServerSide/appsettings.json
index e8ca862..abe6672 100644
--- a/examples/Examples.ServerSide/appsettings.json
+++ b/examples/Examples.ServerSide/appsettings.json
@@ -1,6 +1,6 @@
{
"Auth0": {
- "Domain": "[Auth0_Audience]",
+ "Domain": "[Auth0_Domain]",
"ClientId": "[Auth0_Client_Id]",
"Audience": "[Auth0_Audience]",
"ClientSecret": "[Auth0_Client_Secret]"
diff --git a/src/Blazor.Auth0.ClientSide/AuthenticationService.cs b/src/Blazor.Auth0.ClientSide/AuthenticationService.cs
index ddbfb9e..bcad47e 100644
--- a/src/Blazor.Auth0.ClientSide/AuthenticationService.cs
+++ b/src/Blazor.Auth0.ClientSide/AuthenticationService.cs
@@ -243,7 +243,7 @@ public Task GetAuthenticationStateAsync()
identity.AddClaims(this.User.CustomClaims.Select(customClaim => new Claim(customClaim.Key, customClaim.Value.GetRawText(), customClaim.Value.ValueKind.ToString())));
- identity.AddClaims(this.User.Permissions.Select(permission => new Claim($"{permission}", "true", "permissions")));
+ identity.AddClaims(this.User.Permissions.Select(permission => new Claim("permissions", permission, "permissions")));
}
else
{
diff --git a/src/Blazor.Auth0.ClientSide/Blazor.Auth0.ClientSide.csproj b/src/Blazor.Auth0.ClientSide/Blazor.Auth0.ClientSide.csproj
index 63341b9..60c373b 100644
--- a/src/Blazor.Auth0.ClientSide/Blazor.Auth0.ClientSide.csproj
+++ b/src/Blazor.Auth0.ClientSide/Blazor.Auth0.ClientSide.csproj
@@ -3,8 +3,8 @@
netstandard2.0
3.0
-
- 1.0.0-Preview3
+ 8.0
+ 2.0.0-Preview1
Henry Alberto Rodriguez Rodriguez
Auth0 library for Balzor
https://github.com/henalbrod/Blazor.Auth0
@@ -16,17 +16,21 @@
true
https://raw.githubusercontent.com/henalbrod/Blazor.Auth0/master/src/Blazor.Auth0.ClientSide/icon.png
Blazor-Auth0-ClientSide
- Upgraded to .Net Core 3.0.0
-
+ Upgraded to .Net Core 3.1.0-preview1
+
+BREAKING CHANGES:
+
+Auth0 permissions are now accesible as an any other array claim: policy.RequireClaim("permissions", "permission_name")
true
+ ..\..\packages
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -51,9 +55,18 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Blazor.Auth0.ServerSide/Blazor.Auth0.ServerSide.csproj b/src/Blazor.Auth0.ServerSide/Blazor.Auth0.ServerSide.csproj
index 33b64e0..fa4f355 100644
--- a/src/Blazor.Auth0.ServerSide/Blazor.Auth0.ServerSide.csproj
+++ b/src/Blazor.Auth0.ServerSide/Blazor.Auth0.ServerSide.csproj
@@ -1,9 +1,9 @@
- netcoreapp3.0
-
- 1.0.0-Preview3
+ netcoreapp3.1
+ 8.0
+ 2.0.0-Preview1
Henry Alberto Rodriguez Rodriguez
Auth0 library for Balzor
https://github.com/henalbrod/Blazor.Auth0
@@ -15,8 +15,13 @@
true
https://raw.githubusercontent.com/henalbrod/Blazor.Auth0/master/src/Blazor.Auth0.ClientSide/icon.png
Blazor-Auth0-ServerSide
- Upgraded to .Net Core 3.0.0
+ Upgraded to .Net Core 3.1.0-preview1
+
+BREAKING CHANGES:
+
+Auth0 permissions are now accesible as an any other array claim: policy.RequireClaim("permissions", "permission_name")
true
+ ..\..\packages
@@ -26,11 +31,24 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -40,8 +58,4 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/src/Blazor.Auth0.ServerSide/BlazorAuth0BuilderExtensions.cs b/src/Blazor.Auth0.ServerSide/BlazorAuth0BuilderExtensions.cs
index 2cdc6c3..e0a84c4 100644
--- a/src/Blazor.Auth0.ServerSide/BlazorAuth0BuilderExtensions.cs
+++ b/src/Blazor.Auth0.ServerSide/BlazorAuth0BuilderExtensions.cs
@@ -10,6 +10,7 @@ namespace Blazor.Auth0
using System.Net.Http;
using System.Security.Claims;
using System.Security.Principal;
+ using System.Text.Json;
using System.Threading.Tasks;
using System.Web;
using Blazor.Auth0.Models;
@@ -187,6 +188,7 @@ public static void AddDefaultBlazorAuth0Authentication(this IServiceCollection s
HttpRequest request = context.Request;
postLogoutUri = request.Scheme + "://" + request.Host + request.PathBase + postLogoutUri;
}
+
logoutUri += $"&returnTo={Uri.EscapeDataString(postLogoutUri)}";
}
@@ -215,7 +217,7 @@ public static void AddDefaultBlazorAuth0Authentication(this IServiceCollection s
identity.AddClaims(u.Principal.Claims);
- identity.AddClaims(permissions.Select(permission => new Claim($"{permission}", "true", "permissions")));
+ identity.AddClaims(permissions.Select(permission => new Claim("permissions", permission, "permissions")));
identity.AddClaim(new Claim("exp", parsedAccessToken.Exp.ToString(), ClaimValueTypes.Integer64));
diff --git a/src/Blazor.Auth0.Shared/Blazor.Auth0.Shared.csproj b/src/Blazor.Auth0.Shared/Blazor.Auth0.Shared.csproj
index 4d527d2..0eade8b 100644
--- a/src/Blazor.Auth0.Shared/Blazor.Auth0.Shared.csproj
+++ b/src/Blazor.Auth0.Shared/Blazor.Auth0.Shared.csproj
@@ -2,8 +2,8 @@
netstandard2.0
-
- 1.0.0-Preview3
+ 8.0
+ 2.0.0-Preview1
Henry Alberto Rodriguez Rodriguez
Auth0 library for Balzor
https://github.com/henalbrod/Blazor.Auth0
@@ -15,9 +15,13 @@
true
https://raw.githubusercontent.com/henalbrod/Blazor.Auth0/master/src/Blazor.Auth0.ClientSide/icon.png
Blazor-Auth0-Shared
- Upgraded to .Net Core 3.0.0
- true
+ Upgraded to .Net Core 3.1.0-preview1
+BREAKING CHANGES:
+
+Auth0 permissions are now accesible as an any other array claim: policy.RequireClaim("permissions", "permission_name")
+ true
+ ..\..\packages
@@ -29,11 +33,11 @@
-
-
-
+
+
+
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/Blazor.Auth0.sln b/src/Blazor.Auth0.sln
index a6a416d..f325313 100644
--- a/src/Blazor.Auth0.sln
+++ b/src/Blazor.Auth0.sln
@@ -3,11 +3,25 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.202
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Blazor.Auth0.Shared", "Blazor.Auth0.Shared\Blazor.Auth0.Shared.csproj", "{20F66828-6565-489D-B197-E8251B200737}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blazor.Auth0.Shared", "Blazor.Auth0.Shared\Blazor.Auth0.Shared.csproj", "{20F66828-6565-489D-B197-E8251B200737}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Blazor.Auth0.ClientSide", "Blazor.Auth0.ClientSide\Blazor.Auth0.ClientSide.csproj", "{A8C1B957-C46E-4936-B470-0E6D03CD0EFB}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blazor.Auth0.ClientSide", "Blazor.Auth0.ClientSide\Blazor.Auth0.ClientSide.csproj", "{A8C1B957-C46E-4936-B470-0E6D03CD0EFB}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Blazor.Auth0.ServerSide", "Blazor.Auth0.ServerSide\Blazor.Auth0.ServerSide.csproj", "{CE138C35-6B00-4BE4-A172-F4E641070348}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blazor.Auth0.ServerSide", "Blazor.Auth0.ServerSide\Blazor.Auth0.ServerSide.csproj", "{CE138C35-6B00-4BE4-A172-F4E641070348}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Examples", "Examples", "{30AEBE64-A293-424D-A26A-ADCDAAAF7391}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Examples.ClientSide", "..\examples\Examples.ClientSide\Examples.ClientSide.csproj", "{7C0D133F-DCB3-4C3B-B13F-D20BF9D97DA2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Examples.ServerSide", "..\examples\Examples.ServerSide\Examples.ServerSide.csproj", "{041EF1E4-B4E2-4A44-884E-144F2FE6F566}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ASP.Net Core Hosted", "ASP.Net Core Hosted", "{7AC81899-F4AF-4B85-8B8F-BE6E3BD2E4AE}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Examples.AspNetCoreHosted.Shared", "..\examples\Examples.AspNetCoreHosted\Shared\Examples.AspNetCoreHosted.Shared.csproj", "{C0690880-66EB-49CE-99BA-6A5099B85306}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Examples.AspNetCoreHosted.Client", "..\examples\Examples.AspNetCoreHosted\Client\Examples.AspNetCoreHosted.Client.csproj", "{3242EA63-B755-485B-9ECB-C873B5F7DDE7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Examples.AspNetCoreHosted.Server", "..\examples\Examples.AspNetCoreHosted\Server\Examples.AspNetCoreHosted.Server.csproj", "{50045E62-8938-4C58-AC2A-7C7946A67E0B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -27,10 +41,38 @@ Global
{CE138C35-6B00-4BE4-A172-F4E641070348}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CE138C35-6B00-4BE4-A172-F4E641070348}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE138C35-6B00-4BE4-A172-F4E641070348}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7C0D133F-DCB3-4C3B-B13F-D20BF9D97DA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7C0D133F-DCB3-4C3B-B13F-D20BF9D97DA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7C0D133F-DCB3-4C3B-B13F-D20BF9D97DA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7C0D133F-DCB3-4C3B-B13F-D20BF9D97DA2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {041EF1E4-B4E2-4A44-884E-144F2FE6F566}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {041EF1E4-B4E2-4A44-884E-144F2FE6F566}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {041EF1E4-B4E2-4A44-884E-144F2FE6F566}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {041EF1E4-B4E2-4A44-884E-144F2FE6F566}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C0690880-66EB-49CE-99BA-6A5099B85306}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C0690880-66EB-49CE-99BA-6A5099B85306}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C0690880-66EB-49CE-99BA-6A5099B85306}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C0690880-66EB-49CE-99BA-6A5099B85306}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3242EA63-B755-485B-9ECB-C873B5F7DDE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3242EA63-B755-485B-9ECB-C873B5F7DDE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3242EA63-B755-485B-9ECB-C873B5F7DDE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3242EA63-B755-485B-9ECB-C873B5F7DDE7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {50045E62-8938-4C58-AC2A-7C7946A67E0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {50045E62-8938-4C58-AC2A-7C7946A67E0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {50045E62-8938-4C58-AC2A-7C7946A67E0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {50045E62-8938-4C58-AC2A-7C7946A67E0B}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {7C0D133F-DCB3-4C3B-B13F-D20BF9D97DA2} = {30AEBE64-A293-424D-A26A-ADCDAAAF7391}
+ {041EF1E4-B4E2-4A44-884E-144F2FE6F566} = {30AEBE64-A293-424D-A26A-ADCDAAAF7391}
+ {7AC81899-F4AF-4B85-8B8F-BE6E3BD2E4AE} = {30AEBE64-A293-424D-A26A-ADCDAAAF7391}
+ {C0690880-66EB-49CE-99BA-6A5099B85306} = {7AC81899-F4AF-4B85-8B8F-BE6E3BD2E4AE}
+ {3242EA63-B755-485B-9ECB-C873B5F7DDE7} = {7AC81899-F4AF-4B85-8B8F-BE6E3BD2E4AE}
+ {50045E62-8938-4C58-AC2A-7C7946A67E0B} = {7AC81899-F4AF-4B85-8B8F-BE6E3BD2E4AE}
+ EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3EA56D0B-82C6-43BB-921D-628F04092D1F}
EndGlobalSection