From ee6db5a7fdadd97c1a4779d1833a2fcf194fdecf Mon Sep 17 00:00:00 2001 From: Hao Kung Date: Wed, 28 Feb 2018 14:23:48 -0800 Subject: [PATCH] Switch to use forwarding instead of virtual handler (#27) --- AuthSamples.sln | 2 +- .../.bowerrc | 0 .../Controllers/AccountController.cs | 2 +- .../Controllers/HomeController.cs | 4 +- .../Models/ErrorViewModel.cs | 2 +- .../PathSchemeSelection.csproj} | 0 .../Program.cs | 2 +- .../README.md | 2 +- samples/PathSchemeSelection/Startup.cs | 90 ++++++++++++++++++ .../Views/Account/AccessDenied.cshtml | 0 .../Views/Account/Login.cshtml | 0 .../Views/Home/Index.cshtml | 0 .../Views/Home/MyClaims.cshtml | 0 .../Views/Shared/Error.cshtml | 0 .../Views/Shared/_Layout.cshtml | 0 .../Shared/_ValidationScriptsPartial.cshtml | 0 .../Views/_ViewImports.cshtml | 3 + .../Views/_ViewStart.cshtml | 0 .../appsettings.Development.json | 0 .../appsettings.json | 0 .../bower.json | 0 .../bundleconfig.json | 0 .../wwwroot/css/site.css | 0 .../wwwroot/css/site.min.css | 0 .../wwwroot/favicon.ico | Bin .../wwwroot/images/banner1.svg | 0 .../wwwroot/images/banner2.svg | 0 .../wwwroot/images/banner3.svg | 0 .../wwwroot/images/banner4.svg | 0 .../wwwroot/js/site.js | 0 .../wwwroot/js/site.min.js | 0 .../wwwroot/lib/bootstrap/.bower.json | 0 .../wwwroot/lib/bootstrap/LICENSE | 0 .../bootstrap/dist/css/bootstrap-theme.css | 0 .../dist/css/bootstrap-theme.css.map | 0 .../dist/css/bootstrap-theme.min.css | 0 .../dist/css/bootstrap-theme.min.css.map | 0 .../lib/bootstrap/dist/css/bootstrap.css | 0 .../lib/bootstrap/dist/css/bootstrap.css.map | 0 .../lib/bootstrap/dist/css/bootstrap.min.css | 0 .../bootstrap/dist/css/bootstrap.min.css.map | 0 .../fonts/glyphicons-halflings-regular.eot | Bin .../fonts/glyphicons-halflings-regular.svg | 0 .../fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin .../fonts/glyphicons-halflings-regular.woff2 | Bin .../lib/bootstrap/dist/js/bootstrap.js | 0 .../lib/bootstrap/dist/js/bootstrap.min.js | 0 .../wwwroot/lib/bootstrap/dist/js/npm.js | 0 .../jquery-validation-unobtrusive/.bower.json | 0 .../jquery.validate.unobtrusive.js | 0 .../jquery.validate.unobtrusive.min.js | 0 .../wwwroot/lib/jquery-validation/.bower.json | 0 .../wwwroot/lib/jquery-validation/LICENSE.md | 0 .../dist/additional-methods.js | 0 .../dist/additional-methods.min.js | 0 .../jquery-validation/dist/jquery.validate.js | 0 .../dist/jquery.validate.min.js | 0 .../wwwroot/lib/jquery/.bower.json | 0 .../wwwroot/lib/jquery/LICENSE.txt | 0 .../wwwroot/lib/jquery/dist/jquery.js | 0 .../wwwroot/lib/jquery/dist/jquery.min.js | 0 .../wwwroot/lib/jquery/dist/jquery.min.map | 0 .../Startup.cs | 14 ++- .../Views/_ViewImports.cshtml | 3 - .../AuthSamples.FunctionalTests.csproj | 2 +- ...meTests.cs => PathSchemeSelectionTests.cs} | 4 +- 67 files changed, 109 insertions(+), 21 deletions(-) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/.bowerrc (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Controllers/AccountController.cs (96%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Controllers/HomeController.cs (80%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Models/ErrorViewModel.cs (73%) rename samples/{VirtualSchemes.PathSchemeSelection/VirtualSchemes.PathSchemeSelection.csproj => PathSchemeSelection/PathSchemeSelection.csproj} (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Program.cs (91%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/README.md (93%) create mode 100644 samples/PathSchemeSelection/Startup.cs rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Views/Account/AccessDenied.cshtml (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Views/Account/Login.cshtml (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Views/Home/Index.cshtml (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Views/Home/MyClaims.cshtml (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Views/Shared/Error.cshtml (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Views/Shared/_Layout.cshtml (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Views/Shared/_ValidationScriptsPartial.cshtml (100%) create mode 100644 samples/PathSchemeSelection/Views/_ViewImports.cshtml rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/Views/_ViewStart.cshtml (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/appsettings.Development.json (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/appsettings.json (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/bower.json (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/bundleconfig.json (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/css/site.css (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/css/site.min.css (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/favicon.ico (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/images/banner1.svg (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/images/banner2.svg (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/images/banner3.svg (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/images/banner4.svg (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/js/site.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/js/site.min.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/.bower.json (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/LICENSE (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css.map (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css.map (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/css/bootstrap.css (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.svg (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/js/bootstrap.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/bootstrap/dist/js/npm.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery-validation-unobtrusive/.bower.json (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery-validation/.bower.json (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery-validation/LICENSE.md (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery-validation/dist/additional-methods.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery-validation/dist/additional-methods.min.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery-validation/dist/jquery.validate.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery/.bower.json (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery/LICENSE.txt (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery/dist/jquery.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery/dist/jquery.min.js (100%) rename samples/{VirtualSchemes.PathSchemeSelection => PathSchemeSelection}/wwwroot/lib/jquery/dist/jquery.min.map (100%) delete mode 100644 samples/VirtualSchemes.PathSchemeSelection/Views/_ViewImports.cshtml rename test/AuthSamples.FunctionalTests/{VirtualSchemeTests.cs => PathSchemeSelectionTests.cs} (90%) diff --git a/AuthSamples.sln b/AuthSamples.sln index 68d8013598..dce68db1f9 100644 --- a/AuthSamples.sln +++ b/AuthSamples.sln @@ -18,7 +18,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{15E42EAC-5 EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AuthSamples.FunctionalTests", "test\AuthSamples.FunctionalTests\AuthSamples.FunctionalTests.csproj", "{B5C26BE6-655E-4D7F-B756-F286750EF172}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VirtualSchemes.PathSchemeSelection", "samples\VirtualSchemes.PathSchemeSelection\VirtualSchemes.PathSchemeSelection.csproj", "{4E91BD2A-616F-45EE-9647-2F1608D17FB9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PathSchemeSelection", "samples\PathSchemeSelection\PathSchemeSelection.csproj", "{4E91BD2A-616F-45EE-9647-2F1608D17FB9}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Identity.ExternalClaims", "samples\Identity.ExternalClaims\Identity.ExternalClaims.csproj", "{D8804E7A-BD7A-4E4B-ACA7-822A37A81B28}" EndProject diff --git a/samples/VirtualSchemes.PathSchemeSelection/.bowerrc b/samples/PathSchemeSelection/.bowerrc similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/.bowerrc rename to samples/PathSchemeSelection/.bowerrc diff --git a/samples/VirtualSchemes.PathSchemeSelection/Controllers/AccountController.cs b/samples/PathSchemeSelection/Controllers/AccountController.cs similarity index 96% rename from samples/VirtualSchemes.PathSchemeSelection/Controllers/AccountController.cs rename to samples/PathSchemeSelection/Controllers/AccountController.cs index 75b228b12b..01fd44496a 100644 --- a/samples/VirtualSchemes.PathSchemeSelection/Controllers/AccountController.cs +++ b/samples/PathSchemeSelection/Controllers/AccountController.cs @@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Mvc; -namespace AuthSamples.VirtualScheme.PathSchemeSelection.Controllers +namespace AuthSamples.PathSchemeSelection.Controllers { public class AccountController : Controller diff --git a/samples/VirtualSchemes.PathSchemeSelection/Controllers/HomeController.cs b/samples/PathSchemeSelection/Controllers/HomeController.cs similarity index 80% rename from samples/VirtualSchemes.PathSchemeSelection/Controllers/HomeController.cs rename to samples/PathSchemeSelection/Controllers/HomeController.cs index f75a08a53b..94df7c0772 100644 --- a/samples/VirtualSchemes.PathSchemeSelection/Controllers/HomeController.cs +++ b/samples/PathSchemeSelection/Controllers/HomeController.cs @@ -1,9 +1,9 @@ using System.Diagnostics; -using AuthSamples.VirtualScheme.PathSchemeSelection.Models; +using AuthSamples.PathSchemeSelection.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -namespace AuthSamples.VirtualScheme.PathSchemeSelection.Controllers +namespace AuthSamples.PathSchemeSelection.Controllers { public class HomeController : Controller { diff --git a/samples/VirtualSchemes.PathSchemeSelection/Models/ErrorViewModel.cs b/samples/PathSchemeSelection/Models/ErrorViewModel.cs similarity index 73% rename from samples/VirtualSchemes.PathSchemeSelection/Models/ErrorViewModel.cs rename to samples/PathSchemeSelection/Models/ErrorViewModel.cs index 1f610a5905..c7404e76c5 100644 --- a/samples/VirtualSchemes.PathSchemeSelection/Models/ErrorViewModel.cs +++ b/samples/PathSchemeSelection/Models/ErrorViewModel.cs @@ -1,6 +1,6 @@ using System; -namespace AuthSamples.VirtualScheme.PathSchemeSelection.Models +namespace AuthSamples.PathSchemeSelection.Models { public class ErrorViewModel { diff --git a/samples/VirtualSchemes.PathSchemeSelection/VirtualSchemes.PathSchemeSelection.csproj b/samples/PathSchemeSelection/PathSchemeSelection.csproj similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/VirtualSchemes.PathSchemeSelection.csproj rename to samples/PathSchemeSelection/PathSchemeSelection.csproj diff --git a/samples/VirtualSchemes.PathSchemeSelection/Program.cs b/samples/PathSchemeSelection/Program.cs similarity index 91% rename from samples/VirtualSchemes.PathSchemeSelection/Program.cs rename to samples/PathSchemeSelection/Program.cs index d54edab827..424cb8c9bc 100644 --- a/samples/VirtualSchemes.PathSchemeSelection/Program.cs +++ b/samples/PathSchemeSelection/Program.cs @@ -8,7 +8,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; -namespace AuthSamples.VirtualScheme.PathSchemeSelection +namespace AuthSamples.PathSchemeSelection { public class Program { diff --git a/samples/VirtualSchemes.PathSchemeSelection/README.md b/samples/PathSchemeSelection/README.md similarity index 93% rename from samples/VirtualSchemes.PathSchemeSelection/README.md rename to samples/PathSchemeSelection/README.md index f468bb7a77..d9c0947b5e 100644 --- a/samples/VirtualSchemes.PathSchemeSelection/README.md +++ b/samples/PathSchemeSelection/README.md @@ -1,4 +1,4 @@ -AuthSamples.VirtualScheme.PathSchemeSelection +AuthSamples.PathSchemeSelection ================= Sample demonstrating selecting between cookie and another authentication scheme based on the request: diff --git a/samples/PathSchemeSelection/Startup.cs b/samples/PathSchemeSelection/Startup.cs new file mode 100644 index 0000000000..42e137ebcf --- /dev/null +++ b/samples/PathSchemeSelection/Startup.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Claims; +using System.Text.Encodings.Web; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authentication.Cookies; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; + +namespace AuthSamples.PathSchemeSelection +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddMvc(); + + services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) + .AddScheme("Api", o => { }) + .AddCookie(options => + { + // Foward any requests that start with /api to that scheme + options.ForwardDefaultSelector = ctx => + { + return ctx.Request.Path.StartsWithSegments("/api") ? "Api" : null; + }; + options.AccessDeniedPath = "/account/denied"; + options.LoginPath = "/account/login"; + }); + } + + public class ApiAuthHandler : AuthenticationHandler + { + private readonly ClaimsPrincipal _id; + + public ApiAuthHandler(IOptionsMonitor options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock) : base(options, logger, encoder, clock) + { + var id = new ClaimsIdentity("Api"); + id.AddClaim(new Claim(ClaimTypes.Name, "Hao", ClaimValueTypes.String, "Api")); + _id = new ClaimsPrincipal(id); + } + + protected override Task HandleAuthenticateAsync() + => Task.FromResult(AuthenticateResult.Success(new AuthenticationTicket(_id, "Api"))); + } + + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseExceptionHandler("/Home/Error"); + } + + app.UseStaticFiles(); + + // Must go before UseMvc + app.UseAuthentication(); + + app.UseMvc(routes => + { + routes.MapRoute( + name: "default", + template: "{controller=Home}/{action=Index}/{id?}"); + routes.MapRoute( + name: "api", + template: "api/{controller=Home}/{action=Index}/{id?}"); + }); + } + } +} diff --git a/samples/VirtualSchemes.PathSchemeSelection/Views/Account/AccessDenied.cshtml b/samples/PathSchemeSelection/Views/Account/AccessDenied.cshtml similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/Views/Account/AccessDenied.cshtml rename to samples/PathSchemeSelection/Views/Account/AccessDenied.cshtml diff --git a/samples/VirtualSchemes.PathSchemeSelection/Views/Account/Login.cshtml b/samples/PathSchemeSelection/Views/Account/Login.cshtml similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/Views/Account/Login.cshtml rename to samples/PathSchemeSelection/Views/Account/Login.cshtml diff --git a/samples/VirtualSchemes.PathSchemeSelection/Views/Home/Index.cshtml b/samples/PathSchemeSelection/Views/Home/Index.cshtml similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/Views/Home/Index.cshtml rename to samples/PathSchemeSelection/Views/Home/Index.cshtml diff --git a/samples/VirtualSchemes.PathSchemeSelection/Views/Home/MyClaims.cshtml b/samples/PathSchemeSelection/Views/Home/MyClaims.cshtml similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/Views/Home/MyClaims.cshtml rename to samples/PathSchemeSelection/Views/Home/MyClaims.cshtml diff --git a/samples/VirtualSchemes.PathSchemeSelection/Views/Shared/Error.cshtml b/samples/PathSchemeSelection/Views/Shared/Error.cshtml similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/Views/Shared/Error.cshtml rename to samples/PathSchemeSelection/Views/Shared/Error.cshtml diff --git a/samples/VirtualSchemes.PathSchemeSelection/Views/Shared/_Layout.cshtml b/samples/PathSchemeSelection/Views/Shared/_Layout.cshtml similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/Views/Shared/_Layout.cshtml rename to samples/PathSchemeSelection/Views/Shared/_Layout.cshtml diff --git a/samples/VirtualSchemes.PathSchemeSelection/Views/Shared/_ValidationScriptsPartial.cshtml b/samples/PathSchemeSelection/Views/Shared/_ValidationScriptsPartial.cshtml similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/Views/Shared/_ValidationScriptsPartial.cshtml rename to samples/PathSchemeSelection/Views/Shared/_ValidationScriptsPartial.cshtml diff --git a/samples/PathSchemeSelection/Views/_ViewImports.cshtml b/samples/PathSchemeSelection/Views/_ViewImports.cshtml new file mode 100644 index 0000000000..b13949eff0 --- /dev/null +++ b/samples/PathSchemeSelection/Views/_ViewImports.cshtml @@ -0,0 +1,3 @@ +@using AuthSamples.PathSchemeSelection +@using AuthSamples.PathSchemeSelection.Models +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/samples/VirtualSchemes.PathSchemeSelection/Views/_ViewStart.cshtml b/samples/PathSchemeSelection/Views/_ViewStart.cshtml similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/Views/_ViewStart.cshtml rename to samples/PathSchemeSelection/Views/_ViewStart.cshtml diff --git a/samples/VirtualSchemes.PathSchemeSelection/appsettings.Development.json b/samples/PathSchemeSelection/appsettings.Development.json similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/appsettings.Development.json rename to samples/PathSchemeSelection/appsettings.Development.json diff --git a/samples/VirtualSchemes.PathSchemeSelection/appsettings.json b/samples/PathSchemeSelection/appsettings.json similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/appsettings.json rename to samples/PathSchemeSelection/appsettings.json diff --git a/samples/VirtualSchemes.PathSchemeSelection/bower.json b/samples/PathSchemeSelection/bower.json similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/bower.json rename to samples/PathSchemeSelection/bower.json diff --git a/samples/VirtualSchemes.PathSchemeSelection/bundleconfig.json b/samples/PathSchemeSelection/bundleconfig.json similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/bundleconfig.json rename to samples/PathSchemeSelection/bundleconfig.json diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/css/site.css b/samples/PathSchemeSelection/wwwroot/css/site.css similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/css/site.css rename to samples/PathSchemeSelection/wwwroot/css/site.css diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/css/site.min.css b/samples/PathSchemeSelection/wwwroot/css/site.min.css similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/css/site.min.css rename to samples/PathSchemeSelection/wwwroot/css/site.min.css diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/favicon.ico b/samples/PathSchemeSelection/wwwroot/favicon.ico similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/favicon.ico rename to samples/PathSchemeSelection/wwwroot/favicon.ico diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/images/banner1.svg b/samples/PathSchemeSelection/wwwroot/images/banner1.svg similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/images/banner1.svg rename to samples/PathSchemeSelection/wwwroot/images/banner1.svg diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/images/banner2.svg b/samples/PathSchemeSelection/wwwroot/images/banner2.svg similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/images/banner2.svg rename to samples/PathSchemeSelection/wwwroot/images/banner2.svg diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/images/banner3.svg b/samples/PathSchemeSelection/wwwroot/images/banner3.svg similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/images/banner3.svg rename to samples/PathSchemeSelection/wwwroot/images/banner3.svg diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/images/banner4.svg b/samples/PathSchemeSelection/wwwroot/images/banner4.svg similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/images/banner4.svg rename to samples/PathSchemeSelection/wwwroot/images/banner4.svg diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/js/site.js b/samples/PathSchemeSelection/wwwroot/js/site.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/js/site.js rename to samples/PathSchemeSelection/wwwroot/js/site.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/js/site.min.js b/samples/PathSchemeSelection/wwwroot/js/site.min.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/js/site.min.js rename to samples/PathSchemeSelection/wwwroot/js/site.min.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/.bower.json b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/.bower.json similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/.bower.json rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/.bower.json diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/LICENSE b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/LICENSE similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/LICENSE rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/LICENSE diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css.map b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css.map similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css.map rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css.map diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css.map b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css.map similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css.map rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css.map diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.css b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.css similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.css rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.css diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.svg b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.svg rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.svg diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/bootstrap.js b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/bootstrap.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/bootstrap.js rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/bootstrap.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/npm.js b/samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/npm.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/npm.js rename to samples/PathSchemeSelection/wwwroot/lib/bootstrap/dist/js/npm.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/.bower.json b/samples/PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/.bower.json similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/.bower.json rename to samples/PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/.bower.json diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js b/samples/PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js rename to samples/PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js b/samples/PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js rename to samples/PathSchemeSelection/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/.bower.json b/samples/PathSchemeSelection/wwwroot/lib/jquery-validation/.bower.json similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/.bower.json rename to samples/PathSchemeSelection/wwwroot/lib/jquery-validation/.bower.json diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/LICENSE.md b/samples/PathSchemeSelection/wwwroot/lib/jquery-validation/LICENSE.md similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/LICENSE.md rename to samples/PathSchemeSelection/wwwroot/lib/jquery-validation/LICENSE.md diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/dist/additional-methods.js b/samples/PathSchemeSelection/wwwroot/lib/jquery-validation/dist/additional-methods.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/dist/additional-methods.js rename to samples/PathSchemeSelection/wwwroot/lib/jquery-validation/dist/additional-methods.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/dist/additional-methods.min.js b/samples/PathSchemeSelection/wwwroot/lib/jquery-validation/dist/additional-methods.min.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/dist/additional-methods.min.js rename to samples/PathSchemeSelection/wwwroot/lib/jquery-validation/dist/additional-methods.min.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/dist/jquery.validate.js b/samples/PathSchemeSelection/wwwroot/lib/jquery-validation/dist/jquery.validate.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/dist/jquery.validate.js rename to samples/PathSchemeSelection/wwwroot/lib/jquery-validation/dist/jquery.validate.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js b/samples/PathSchemeSelection/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js rename to samples/PathSchemeSelection/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery/.bower.json b/samples/PathSchemeSelection/wwwroot/lib/jquery/.bower.json similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery/.bower.json rename to samples/PathSchemeSelection/wwwroot/lib/jquery/.bower.json diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery/LICENSE.txt b/samples/PathSchemeSelection/wwwroot/lib/jquery/LICENSE.txt similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery/LICENSE.txt rename to samples/PathSchemeSelection/wwwroot/lib/jquery/LICENSE.txt diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.js b/samples/PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.js rename to samples/PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.min.js b/samples/PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.min.js similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.min.js rename to samples/PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.min.js diff --git a/samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.min.map b/samples/PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.min.map similarity index 100% rename from samples/VirtualSchemes.PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.min.map rename to samples/PathSchemeSelection/wwwroot/lib/jquery/dist/jquery.min.map diff --git a/samples/VirtualSchemes.PathSchemeSelection/Startup.cs b/samples/VirtualSchemes.PathSchemeSelection/Startup.cs index f8e93354d1..ca0f627662 100644 --- a/samples/VirtualSchemes.PathSchemeSelection/Startup.cs +++ b/samples/VirtualSchemes.PathSchemeSelection/Startup.cs @@ -29,17 +29,15 @@ namespace AuthSamples.VirtualScheme.PathSchemeSelection { services.AddMvc(); - services.AddAuthentication("Dynamic") - .AddVirtualScheme("Dynamic", "Dynamic", o => - { - o.DefaultSelector = ctx => - { - return ctx.Request.Path.StartsWithSegments("/api") ? "Api" : CookieAuthenticationDefaults.AuthenticationScheme; - }; - }) + services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddScheme("Api", o => { }) .AddCookie(options => { + // Foward any requests that start with /api to that scheme + options.ForwardDefaultSelector = ctx => + { + return ctx.Request.Path.StartsWithSegments("/api") ? "Api" : null; + }; options.AccessDeniedPath = "/account/denied"; options.LoginPath = "/account/login"; }); diff --git a/samples/VirtualSchemes.PathSchemeSelection/Views/_ViewImports.cshtml b/samples/VirtualSchemes.PathSchemeSelection/Views/_ViewImports.cshtml deleted file mode 100644 index 280a98b37d..0000000000 --- a/samples/VirtualSchemes.PathSchemeSelection/Views/_ViewImports.cshtml +++ /dev/null @@ -1,3 +0,0 @@ -@using AuthSamples.VirtualScheme.PathSchemeSelection -@using AuthSamples.VirtualScheme.PathSchemeSelection.Models -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/test/AuthSamples.FunctionalTests/AuthSamples.FunctionalTests.csproj b/test/AuthSamples.FunctionalTests/AuthSamples.FunctionalTests.csproj index f2f9b73cad..da9025897e 100644 --- a/test/AuthSamples.FunctionalTests/AuthSamples.FunctionalTests.csproj +++ b/test/AuthSamples.FunctionalTests/AuthSamples.FunctionalTests.csproj @@ -16,7 +16,7 @@ - + diff --git a/test/AuthSamples.FunctionalTests/VirtualSchemeTests.cs b/test/AuthSamples.FunctionalTests/PathSchemeSelectionTests.cs similarity index 90% rename from test/AuthSamples.FunctionalTests/VirtualSchemeTests.cs rename to test/AuthSamples.FunctionalTests/PathSchemeSelectionTests.cs index e8eec4c910..7a9f64f5b8 100644 --- a/test/AuthSamples.FunctionalTests/VirtualSchemeTests.cs +++ b/test/AuthSamples.FunctionalTests/PathSchemeSelectionTests.cs @@ -8,9 +8,9 @@ using Xunit; namespace AuthSamples.FunctionalTests { - public class VirtualSchemeTests : IClassFixture> + public class PathSchemeSelectionTests : IClassFixture> { - public VirtualSchemeTests(SampleTestFixture fixture) + public PathSchemeSelectionTests(SampleTestFixture fixture) { Client = fixture.Client; }