From e85b41313f948e575e5e968ac95ebcd72eeed2b0 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 1 Jun 2016 23:47:06 +0200 Subject: [PATCH] oidc --- Yavsc/Views/Shared/Authorize.cshtml | 8 +- Yavsc/Views/Shared/Forbidden.cshtml | 3 + Yavsc/omnisharp.json | 6 + Yavsc/project.json | 10 +- Yavsc/project.lock.json | 166 +++++++++++++++++- Yavsc/src/Controllers/AccountController.cs | 1 - Yavsc/src/Controllers/BlogspotController.cs | 12 +- Yavsc/src/Controllers/OAuthController.cs | 19 +- Yavsc/src/Providers/OAuthProvider.cs | 21 +-- Yavsc/src/Startup.cs | 31 ++-- .../Auth}/AuthorisationHandlers.cs | 0 .../src/ViewModels/Auth/AuthorisationView.cs | 12 ++ Yavsc/src/{ => ViewModels/Auth}/ClaimTypes.cs | 0 testOauthClient/.bowerrc | 3 + .../Controllers/AuthenticationController.cs | 19 ++ testOauthClient/Controllers/HomeController.cs | 35 ++++ testOauthClient/Dockerfile | 11 ++ testOauthClient/README.md | 40 +++++ testOauthClient/Startup.cs | 101 +++++++++++ testOauthClient/Views/Home/About.cshtml | 7 + testOauthClient/Views/Home/Contact.cshtml | 17 ++ testOauthClient/Views/Home/Index.cshtml | 30 ++++ testOauthClient/Views/Shared/Error.cshtml | 6 + testOauthClient/Views/Shared/_Layout.cshtml | 67 +++++++ testOauthClient/Views/_ViewImports.cshtml | 2 + testOauthClient/Views/_ViewStart.cshtml | 3 + testOauthClient/appsettings.json | 10 ++ testOauthClient/bower.json | 10 ++ testOauthClient/gulpfile.js | 50 ++++++ testOauthClient/package.json | 11 ++ testOauthClient/project.json | 51 ++++++ testOauthClient/wwwroot/css/site.css | 24 +++ testOauthClient/wwwroot/css/site.min.css | 1 + testOauthClient/wwwroot/favicon.ico | Bin 0 -> 32038 bytes .../wwwroot/images/ASP-NET-Banners-01.png | Bin 0 -> 8314 bytes .../wwwroot/images/ASP-NET-Banners-02.png | Bin 0 -> 8616 bytes .../wwwroot/images/Banner-01-Azure.png | Bin 0 -> 14436 bytes .../wwwroot/images/Banner-02-VS.png | Bin 0 -> 12388 bytes testOauthClient/wwwroot/js/site.js | 1 + testOauthClient/wwwroot/js/site.min.js | 0 testOauthClient/wwwroot/web.config | 9 + 41 files changed, 740 insertions(+), 57 deletions(-) create mode 100644 Yavsc/Views/Shared/Forbidden.cshtml create mode 100644 Yavsc/omnisharp.json rename Yavsc/src/{ => ViewModels/Auth}/AuthorisationHandlers.cs (100%) create mode 100644 Yavsc/src/ViewModels/Auth/AuthorisationView.cs rename Yavsc/src/{ => ViewModels/Auth}/ClaimTypes.cs (100%) create mode 100755 testOauthClient/.bowerrc create mode 100644 testOauthClient/Controllers/AuthenticationController.cs create mode 100755 testOauthClient/Controllers/HomeController.cs create mode 100644 testOauthClient/Dockerfile create mode 100644 testOauthClient/README.md create mode 100755 testOauthClient/Startup.cs create mode 100755 testOauthClient/Views/Home/About.cshtml create mode 100755 testOauthClient/Views/Home/Contact.cshtml create mode 100755 testOauthClient/Views/Home/Index.cshtml create mode 100755 testOauthClient/Views/Shared/Error.cshtml create mode 100755 testOauthClient/Views/Shared/_Layout.cshtml create mode 100755 testOauthClient/Views/_ViewImports.cshtml create mode 100755 testOauthClient/Views/_ViewStart.cshtml create mode 100755 testOauthClient/appsettings.json create mode 100755 testOauthClient/bower.json create mode 100755 testOauthClient/gulpfile.js create mode 100755 testOauthClient/package.json create mode 100755 testOauthClient/project.json create mode 100755 testOauthClient/wwwroot/css/site.css create mode 100644 testOauthClient/wwwroot/css/site.min.css create mode 100755 testOauthClient/wwwroot/favicon.ico create mode 100755 testOauthClient/wwwroot/images/ASP-NET-Banners-01.png create mode 100755 testOauthClient/wwwroot/images/ASP-NET-Banners-02.png create mode 100755 testOauthClient/wwwroot/images/Banner-01-Azure.png create mode 100755 testOauthClient/wwwroot/images/Banner-02-VS.png create mode 100755 testOauthClient/wwwroot/js/site.js create mode 100644 testOauthClient/wwwroot/js/site.min.js create mode 100644 testOauthClient/wwwroot/web.config diff --git a/Yavsc/Views/Shared/Authorize.cshtml b/Yavsc/Views/Shared/Authorize.cshtml index 78b5c0eb..3598a273 100644 --- a/Yavsc/Views/Shared/Authorize.cshtml +++ b/Yavsc/Views/Shared/Authorize.cshtml @@ -1,18 +1,18 @@ @using AspNet.Security.OpenIdConnect.Extensions @using Microsoft.IdentityModel.Protocols.OpenIdConnect -@using Mvc.Server.Models -@model Tuple + +@model AuthorisationView

Authorization

-

Do you wanna grant @Model.Item2.DisplayName an access to your resources? (scopes requested: @Model.Item1.Scope)

+

Do you wanna grant @Model.Application.DisplayName an access to your resources? (scopes requested: @Model.Message.Scope)

@Html.AntiForgeryToken() - @foreach (var parameter in Model.Item1.Parameters) { + @foreach (var parameter in Model.Message.Parameters) { } diff --git a/Yavsc/Views/Shared/Forbidden.cshtml b/Yavsc/Views/Shared/Forbidden.cshtml new file mode 100644 index 00000000..ed1d38f5 --- /dev/null +++ b/Yavsc/Views/Shared/Forbidden.cshtml @@ -0,0 +1,3 @@ +@model string + +Accès interdit : @model diff --git a/Yavsc/omnisharp.json b/Yavsc/omnisharp.json new file mode 100644 index 00000000..d910b660 --- /dev/null +++ b/Yavsc/omnisharp.json @@ -0,0 +1,6 @@ +{ + "dotnet": { + "projects": "*/project.json", + "enablePackageRestore": false + } +} diff --git a/Yavsc/project.json b/Yavsc/project.json index 6346e9a2..b6089572 100755 --- a/Yavsc/project.json +++ b/Yavsc/project.json @@ -58,15 +58,15 @@ "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-*", "Microsoft.AspNet.Mvc": "6.0.0-rc1-*", "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-*", - "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-*", + "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-*", "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-*", "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-*", "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-*", "Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc1-final", "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-*", - "Microsoft.Extensions.Logging": "1.0.0-rc1-*", - "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-*", + "Microsoft.Extensions.Logging": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final", "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final", "Microsoft.Framework.DependencyInjection": "1.0.0-beta8", "Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0-rc1-final", @@ -110,8 +110,8 @@ "Microsoft.AspNet.DataProtection": "1.0.0-rc1-final", "Microsoft.AspNet.DataProtection.SystemWeb": "1.0.0-rc1-final", "Microsoft.AspNet.Authentication.JwtBearer": "1.0.0-rc1-final", - "System.IdentityModel.Tokens": "5.0.0-rc1-208241120", - "System.IdentityModel.Tokens.Jwt": "5.0.0-rc1-208241120", + "System.IdentityModel.Tokens": "5.0.0-rc1-211161024", + "System.IdentityModel.Tokens.Jwt": "5.0.0-rc1-211161024", "Microsoft.AspNet.Authorization": "1.0.0-rc1-final", "AspNet.Security.OpenIdConnect.Server": "1.0.0-beta4" }, diff --git a/Yavsc/project.lock.json b/Yavsc/project.lock.json index 52f860f8..35a248da 100644 --- a/Yavsc/project.lock.json +++ b/Yavsc/project.lock.json @@ -8897,6 +8897,7 @@ "type": "package", "sha512": "c1S+HBE+KYA5EBxtn25LEK02hHPH/tDQ6RviUTTCJpZIPoputtn8ArsQJy9lVJWZOnw37ufByO2Fmf1M8wpr8Q==", "files": [ + "Antlr.3.4.1.9004.nupkg", "Antlr.3.4.1.9004.nupkg.sha512", "Antlr.nuspec", "lib/Antlr3.Runtime.dll", @@ -8935,6 +8936,7 @@ "app/ef.cmd", "app/project.json", "build/netcore50/EntityFramework.Commands.props", + "EntityFramework.Commands.7.0.0-rc1-final.nupkg", "EntityFramework.Commands.7.0.0-rc1-final.nupkg.sha512", "EntityFramework.Commands.nuspec", "lib/dnx451/EntityFramework.Commands.dll", @@ -8956,6 +8958,7 @@ "type": "package", "sha512": "afwsjOF4xM5KiwAxKMz9R0H8TigWE/jX0FwGBO/QtuA1ElEVLqlQVH4+7PyZaA35HguYRm0wOCmUq9RVTmiAfA==", "files": [ + "EntityFramework.Core.7.0.0-rc1-final.nupkg", "EntityFramework.Core.7.0.0-rc1-final.nupkg.sha512", "EntityFramework.Core.nuspec", "lib/dnx451/EntityFramework.Core.dll", @@ -8972,6 +8975,7 @@ "type": "package", "sha512": "FMB2MgT5aXMF7qGMwf5AGcmpNFoT4s1w0QJ5h+L8W4gyMxWpYamGp9hms7rOSAWY44ZDl5ZMpxiTfu3nY3Nqeg==", "files": [ + "EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final.nupkg", "EntityFramework.MicrosoftSqlServer.7.0.0-rc1-final.nupkg.sha512", "EntityFramework.MicrosoftSqlServer.nuspec", "lib/dotnet5.4/EntityFramework.MicrosoftSqlServer.dll", @@ -8986,6 +8990,7 @@ "type": "package", "sha512": "0Feoct9mtKOIjovUgfESfVDL/odvxNXsIgK3bdlkx7Fsiqp5/tx8oiMx+qO7oNRYWsXN6XDlGKHLOzWEdUssKA==", "files": [ + "EntityFramework.Relational.7.0.0-rc1-final.nupkg", "EntityFramework.Relational.7.0.0-rc1-final.nupkg.sha512", "EntityFramework.Relational.nuspec", "lib/dotnet5.4/EntityFramework.Relational.dll", @@ -9001,6 +9006,7 @@ "sha512": "sXAqOxpHmbqOELC21vAzKlsjqgNCrk3jEjyJxjGnn1+j4hazxiqgSBTl8ZofqYzLO6ias9WfeXJy8HcXOl7waw==", "files": [ "build/netcore50/EntityFramework.Relational.Design.props", + "EntityFramework.Relational.Design.7.0.0-rc1-final.nupkg", "EntityFramework.Relational.Design.7.0.0-rc1-final.nupkg.sha512", "EntityFramework.Relational.Design.nuspec", "lib/dnx451/EntityFramework.Relational.Design.dll", @@ -9016,6 +9022,7 @@ "type": "package", "sha512": "B+h4HHUnCSN/d4DIxW89B6q4efcZzQjajQb1yrlALEeZuCBDIzO0nrEdRZsRSNqJaNzmxRu/OsYqrZVOORUrGw==", "files": [ + "EntityFramework.Sqlite.7.0.0-rc1-final.nupkg", "EntityFramework.Sqlite.7.0.0-rc1-final.nupkg.sha512", "EntityFramework.Sqlite.nuspec", "lib/dotnet5.4/EntityFramework.Sqlite.dll", @@ -9030,6 +9037,7 @@ "type": "package", "sha512": "VW/pz4Luixgc9UuAXPP9vzPIrrw9sHD4ozd2HUzeI3Sd4RdCgSFQT+B3HhPw/+JGKcdAnIQ4D5/Llk43fH07hw==", "files": [ + "EntityFramework7.Npgsql.3.1.0-rc1-3.nupkg", "EntityFramework7.Npgsql.3.1.0-rc1-3.nupkg.sha512", "EntityFramework7.Npgsql.nuspec", "lib/dnx451/EntityFramework7.Npgsql.dll", @@ -9044,6 +9052,7 @@ "type": "package", "sha512": "h7bsey+w3HBqhZQGbk6XeEMxXNCt+1hVg1Ju4QzZHUGSzWT6/ZduaPs3UjNQhpvcTRE7GYa99gYraKdNH3jEOg==", "files": [ + "EntityFramework7.Npgsql.Design.3.1.0-rc1-5.nupkg", "EntityFramework7.Npgsql.Design.3.1.0-rc1-5.nupkg.sha512", "EntityFramework7.Npgsql.Design.nuspec", "lib/dnx451/EntityFramework7.Npgsql.Design.dll", @@ -9058,6 +9067,7 @@ "type": "package", "sha512": "GyWdeflVhu01TYh/KOoMceFYy4rc3+uGKFFw17PpABfdRM1wqCiO73asytkcMGUS91GjPwcONZF5UIjDKpeUSQ==", "files": [ + "Google.Apis.1.11.1.nupkg", "Google.Apis.1.11.1.nupkg.sha512", "Google.Apis.nuspec", "lib/net45/Google.Apis.dll", @@ -9094,6 +9104,7 @@ "type": "package", "sha512": "0Vg/D4BhfPFrlp5iPmp2WxTm3TpgQuwsd9jiYoVXhnbecTnVhRNqY0sJTK8yoMm+otuJ4Dt1C7KSeQ0yWA1d/g==", "files": [ + "Google.Apis.Core.1.11.1.nupkg", "Google.Apis.Core.1.11.1.nupkg.sha512", "Google.Apis.Core.nuspec", "lib/net45/Google.Apis.Core.dll", @@ -9109,6 +9120,7 @@ "type": "package", "sha512": "8EXO8q7cpDUH9G2q+UOPOO/6uZ9aN7mx/4xjFIfkp+qLWVJiYuglkRhjY8Ggs2CucXzHR8GHnovJKB5yQoYaJg==", "files": [ + "Ix-Async.1.2.5.nupkg", "Ix-Async.1.2.5.nupkg.sha512", "Ix-Async.nuspec", "lib/net40/System.Interactive.Async.dll", @@ -9126,6 +9138,7 @@ "Content/Scripts/jquery-1.6.4.js", "Content/Scripts/jquery-1.6.4.min.js", "Content/Scripts/jquery-1.6.4-vsdoc.js", + "jQuery.1.6.4.nupkg", "jQuery.1.6.4.nupkg.sha512", "jQuery.nuspec", "Tools/install.ps1", @@ -9151,6 +9164,7 @@ "lib/net40-client/log4net.xml", "lib/net40-full/log4net.dll", "lib/net40-full/log4net.xml", + "log4net.2.0.3.nupkg", "log4net.2.0.3.nupkg.sha512", "log4net.nuspec" ] @@ -9175,6 +9189,7 @@ "lib/wpa81/MailKit.xml", "lib/Xamarin.iOS10/MailKit.dll", "lib/Xamarin.iOS10/MailKit.xml", + "MailKit.1.3.0-beta7.nupkg", "MailKit.1.3.0-beta7.nupkg.sha512", "MailKit.nuspec" ] @@ -9185,6 +9200,7 @@ "files": [ "lib/dnxcore50/MarkdownDeep.dll", "lib/net451/MarkdownDeep.dll", + "MarkdownDeep-av.NET.1.5.2.nupkg", "MarkdownDeep-av.NET.1.5.2.nupkg.sha512", "MarkdownDeep-av.NET.nuspec" ] @@ -9197,6 +9213,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Antiforgery.xml", "lib/net451/Microsoft.AspNet.Antiforgery.dll", "lib/net451/Microsoft.AspNet.Antiforgery.xml", + "Microsoft.AspNet.Antiforgery.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Antiforgery.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Antiforgery.nuspec" ] @@ -9209,6 +9226,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Authentication.xml", "lib/net451/Microsoft.AspNet.Authentication.dll", "lib/net451/Microsoft.AspNet.Authentication.xml", + "Microsoft.AspNet.Authentication.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Authentication.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Authentication.nuspec" ] @@ -9221,6 +9239,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Authentication.Cookies.xml", "lib/net451/Microsoft.AspNet.Authentication.Cookies.dll", "lib/net451/Microsoft.AspNet.Authentication.Cookies.xml", + "Microsoft.AspNet.Authentication.Cookies.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Authentication.Cookies.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Authentication.Cookies.nuspec" ] @@ -9233,6 +9252,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Authentication.Facebook.xml", "lib/net451/Microsoft.AspNet.Authentication.Facebook.dll", "lib/net451/Microsoft.AspNet.Authentication.Facebook.xml", + "Microsoft.AspNet.Authentication.Facebook.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Authentication.Facebook.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Authentication.Facebook.nuspec" ] @@ -9245,6 +9265,7 @@ "lib/dnx451/Microsoft.AspNet.Authentication.JwtBearer.xml", "lib/dnxcore50/Microsoft.AspNet.Authentication.JwtBearer.dll", "lib/dnxcore50/Microsoft.AspNet.Authentication.JwtBearer.xml", + "Microsoft.AspNet.Authentication.JwtBearer.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Authentication.JwtBearer.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Authentication.JwtBearer.nuspec" ] @@ -9257,6 +9278,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Authentication.OAuth.xml", "lib/net451/Microsoft.AspNet.Authentication.OAuth.dll", "lib/net451/Microsoft.AspNet.Authentication.OAuth.xml", + "Microsoft.AspNet.Authentication.OAuth.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Authentication.OAuth.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Authentication.OAuth.nuspec" ] @@ -9269,6 +9291,7 @@ "lib/dnx451/Microsoft.AspNet.Authentication.OpenIdConnect.xml", "lib/dnxcore50/Microsoft.AspNet.Authentication.OpenIdConnect.dll", "lib/dnxcore50/Microsoft.AspNet.Authentication.OpenIdConnect.xml", + "Microsoft.AspNet.Authentication.OpenIdConnect.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Authentication.OpenIdConnect.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Authentication.OpenIdConnect.nuspec" ] @@ -9281,6 +9304,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Authentication.Twitter.xml", "lib/net451/Microsoft.AspNet.Authentication.Twitter.dll", "lib/net451/Microsoft.AspNet.Authentication.Twitter.xml", + "Microsoft.AspNet.Authentication.Twitter.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Authentication.Twitter.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Authentication.Twitter.nuspec" ] @@ -9293,6 +9317,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Authorization.xml", "lib/net451/Microsoft.AspNet.Authorization.dll", "lib/net451/Microsoft.AspNet.Authorization.xml", + "Microsoft.AspNet.Authorization.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Authorization.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Authorization.nuspec" ] @@ -9305,6 +9330,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Cors.xml", "lib/net451/Microsoft.AspNet.Cors.dll", "lib/net451/Microsoft.AspNet.Cors.xml", + "Microsoft.AspNet.Cors.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Cors.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Cors.nuspec" ] @@ -9317,6 +9343,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Cryptography.Internal.xml", "lib/net451/Microsoft.AspNet.Cryptography.Internal.dll", "lib/net451/Microsoft.AspNet.Cryptography.Internal.xml", + "Microsoft.AspNet.Cryptography.Internal.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Cryptography.Internal.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Cryptography.Internal.nuspec" ] @@ -9329,6 +9356,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Cryptography.KeyDerivation.xml", "lib/net451/Microsoft.AspNet.Cryptography.KeyDerivation.dll", "lib/net451/Microsoft.AspNet.Cryptography.KeyDerivation.xml", + "Microsoft.AspNet.Cryptography.KeyDerivation.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Cryptography.KeyDerivation.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Cryptography.KeyDerivation.nuspec" ] @@ -9341,6 +9369,7 @@ "lib/dotnet5.4/Microsoft.AspNet.DataProtection.xml", "lib/net451/Microsoft.AspNet.DataProtection.dll", "lib/net451/Microsoft.AspNet.DataProtection.xml", + "Microsoft.AspNet.DataProtection.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.DataProtection.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.DataProtection.nuspec" ] @@ -9353,6 +9382,7 @@ "lib/dotnet5.4/Microsoft.AspNet.DataProtection.Abstractions.xml", "lib/net451/Microsoft.AspNet.DataProtection.Abstractions.dll", "lib/net451/Microsoft.AspNet.DataProtection.Abstractions.xml", + "Microsoft.AspNet.DataProtection.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.DataProtection.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.DataProtection.Abstractions.nuspec" ] @@ -9364,6 +9394,7 @@ "content/net451/web.config.transform", "lib/net451/Microsoft.AspNet.DataProtection.SystemWeb.dll", "lib/net451/Microsoft.AspNet.DataProtection.SystemWeb.xml", + "Microsoft.AspNet.DataProtection.SystemWeb.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.DataProtection.SystemWeb.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.DataProtection.SystemWeb.nuspec" ] @@ -9376,6 +9407,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Diagnostics.xml", "lib/net451/Microsoft.AspNet.Diagnostics.dll", "lib/net451/Microsoft.AspNet.Diagnostics.xml", + "Microsoft.AspNet.Diagnostics.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Diagnostics.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Diagnostics.nuspec" ] @@ -9388,6 +9420,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Diagnostics.Abstractions.xml", "lib/net451/Microsoft.AspNet.Diagnostics.Abstractions.dll", "lib/net451/Microsoft.AspNet.Diagnostics.Abstractions.xml", + "Microsoft.AspNet.Diagnostics.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Diagnostics.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Diagnostics.Abstractions.nuspec" ] @@ -9400,6 +9433,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Diagnostics.Entity.xml", "lib/net451/Microsoft.AspNet.Diagnostics.Entity.dll", "lib/net451/Microsoft.AspNet.Diagnostics.Entity.xml", + "Microsoft.AspNet.Diagnostics.Entity.7.0.0-rc1-final.nupkg", "Microsoft.AspNet.Diagnostics.Entity.7.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Diagnostics.Entity.nuspec" ] @@ -9412,6 +9446,7 @@ "lib/dotnet5.4/Microsoft.AspNet.FileProviders.Abstractions.xml", "lib/net451/Microsoft.AspNet.FileProviders.Abstractions.dll", "lib/net451/Microsoft.AspNet.FileProviders.Abstractions.xml", + "Microsoft.AspNet.FileProviders.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.FileProviders.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.FileProviders.Abstractions.nuspec" ] @@ -9424,6 +9459,7 @@ "lib/dotnet5.4/Microsoft.AspNet.FileProviders.Physical.xml", "lib/net451/Microsoft.AspNet.FileProviders.Physical.dll", "lib/net451/Microsoft.AspNet.FileProviders.Physical.xml", + "Microsoft.AspNet.FileProviders.Physical.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.FileProviders.Physical.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.FileProviders.Physical.nuspec" ] @@ -9440,6 +9476,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Hosting.xml", "lib/net451/Microsoft.AspNet.Hosting.dll", "lib/net451/Microsoft.AspNet.Hosting.xml", + "Microsoft.AspNet.Hosting.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Hosting.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Hosting.nuspec" ] @@ -9452,6 +9489,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Hosting.Abstractions.xml", "lib/net451/Microsoft.AspNet.Hosting.Abstractions.dll", "lib/net451/Microsoft.AspNet.Hosting.Abstractions.xml", + "Microsoft.AspNet.Hosting.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Hosting.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Hosting.Abstractions.nuspec" ] @@ -9464,6 +9502,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Hosting.Server.Abstractions.xml", "lib/net451/Microsoft.AspNet.Hosting.Server.Abstractions.dll", "lib/net451/Microsoft.AspNet.Hosting.Server.Abstractions.xml", + "Microsoft.AspNet.Hosting.Server.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Hosting.Server.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Hosting.Server.Abstractions.nuspec" ] @@ -9476,6 +9515,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Html.Abstractions.xml", "lib/net451/Microsoft.AspNet.Html.Abstractions.dll", "lib/net451/Microsoft.AspNet.Html.Abstractions.xml", + "Microsoft.AspNet.Html.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Html.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Html.Abstractions.nuspec" ] @@ -9488,6 +9528,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Http.xml", "lib/net451/Microsoft.AspNet.Http.dll", "lib/net451/Microsoft.AspNet.Http.xml", + "Microsoft.AspNet.Http.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Http.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Http.nuspec" ] @@ -9500,6 +9541,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Http.Abstractions.xml", "lib/net451/Microsoft.AspNet.Http.Abstractions.dll", "lib/net451/Microsoft.AspNet.Http.Abstractions.xml", + "Microsoft.AspNet.Http.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Http.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Http.Abstractions.nuspec" ] @@ -9512,6 +9554,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Http.Extensions.xml", "lib/net451/Microsoft.AspNet.Http.Extensions.dll", "lib/net451/Microsoft.AspNet.Http.Extensions.xml", + "Microsoft.AspNet.Http.Extensions.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Http.Extensions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Http.Extensions.nuspec" ] @@ -9524,6 +9567,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Http.Features.xml", "lib/net451/Microsoft.AspNet.Http.Features.dll", "lib/net451/Microsoft.AspNet.Http.Features.xml", + "Microsoft.AspNet.Http.Features.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Http.Features.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Http.Features.nuspec" ] @@ -9536,6 +9580,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Identity.xml", "lib/net451/Microsoft.AspNet.Identity.dll", "lib/net451/Microsoft.AspNet.Identity.xml", + "Microsoft.AspNet.Identity.3.0.0-rc1-final.nupkg", "Microsoft.AspNet.Identity.3.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Identity.nuspec" ] @@ -9548,6 +9593,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Identity.EntityFramework.xml", "lib/net451/Microsoft.AspNet.Identity.EntityFramework.dll", "lib/net451/Microsoft.AspNet.Identity.EntityFramework.xml", + "Microsoft.AspNet.Identity.EntityFramework.3.0.0-rc1-final.nupkg", "Microsoft.AspNet.Identity.EntityFramework.3.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Identity.EntityFramework.nuspec" ] @@ -9560,6 +9606,7 @@ "lib/dotnet5.4/Microsoft.AspNet.IISPlatformHandler.xml", "lib/net451/Microsoft.AspNet.IISPlatformHandler.dll", "lib/net451/Microsoft.AspNet.IISPlatformHandler.xml", + "Microsoft.AspNet.IISPlatformHandler.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.IISPlatformHandler.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.IISPlatformHandler.nuspec" ] @@ -9572,6 +9619,7 @@ "lib/dotnet5.4/Microsoft.AspNet.JsonPatch.xml", "lib/net451/Microsoft.AspNet.JsonPatch.dll", "lib/net451/Microsoft.AspNet.JsonPatch.xml", + "Microsoft.AspNet.JsonPatch.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.JsonPatch.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.JsonPatch.nuspec" ] @@ -9584,6 +9632,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Localization.xml", "lib/net451/Microsoft.AspNet.Localization.dll", "lib/net451/Microsoft.AspNet.Localization.xml", + "Microsoft.AspNet.Localization.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Localization.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Localization.nuspec" ] @@ -9596,6 +9645,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.xml", "lib/net451/Microsoft.AspNet.Mvc.dll", "lib/net451/Microsoft.AspNet.Mvc.xml", + "Microsoft.AspNet.Mvc.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.nuspec" ] @@ -9608,6 +9658,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.Abstractions.xml", "lib/net451/Microsoft.AspNet.Mvc.Abstractions.dll", "lib/net451/Microsoft.AspNet.Mvc.Abstractions.xml", + "Microsoft.AspNet.Mvc.Abstractions.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.Abstractions.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.Abstractions.nuspec" ] @@ -9620,6 +9671,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.ApiExplorer.xml", "lib/net451/Microsoft.AspNet.Mvc.ApiExplorer.dll", "lib/net451/Microsoft.AspNet.Mvc.ApiExplorer.xml", + "Microsoft.AspNet.Mvc.ApiExplorer.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.ApiExplorer.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.ApiExplorer.nuspec" ] @@ -9632,6 +9684,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.Core.xml", "lib/net451/Microsoft.AspNet.Mvc.Core.dll", "lib/net451/Microsoft.AspNet.Mvc.Core.xml", + "Microsoft.AspNet.Mvc.Core.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.Core.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.Core.nuspec" ] @@ -9644,6 +9697,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.Cors.xml", "lib/net451/Microsoft.AspNet.Mvc.Cors.dll", "lib/net451/Microsoft.AspNet.Mvc.Cors.xml", + "Microsoft.AspNet.Mvc.Cors.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.Cors.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.Cors.nuspec" ] @@ -9656,6 +9710,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.DataAnnotations.xml", "lib/net451/Microsoft.AspNet.Mvc.DataAnnotations.dll", "lib/net451/Microsoft.AspNet.Mvc.DataAnnotations.xml", + "Microsoft.AspNet.Mvc.DataAnnotations.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.DataAnnotations.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.DataAnnotations.nuspec" ] @@ -9668,6 +9723,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.Formatters.Json.xml", "lib/net451/Microsoft.AspNet.Mvc.Formatters.Json.dll", "lib/net451/Microsoft.AspNet.Mvc.Formatters.Json.xml", + "Microsoft.AspNet.Mvc.Formatters.Json.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.Formatters.Json.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.Formatters.Json.nuspec" ] @@ -9680,6 +9736,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.Localization.xml", "lib/net451/Microsoft.AspNet.Mvc.Localization.dll", "lib/net451/Microsoft.AspNet.Mvc.Localization.xml", + "Microsoft.AspNet.Mvc.Localization.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.Localization.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.Localization.nuspec" ] @@ -9692,6 +9749,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.Razor.xml", "lib/net451/Microsoft.AspNet.Mvc.Razor.dll", "lib/net451/Microsoft.AspNet.Mvc.Razor.xml", + "Microsoft.AspNet.Mvc.Razor.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.Razor.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.Razor.nuspec" ] @@ -9704,6 +9762,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.Razor.Host.xml", "lib/net451/Microsoft.AspNet.Mvc.Razor.Host.dll", "lib/net451/Microsoft.AspNet.Mvc.Razor.Host.xml", + "Microsoft.AspNet.Mvc.Razor.Host.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.Razor.Host.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.Razor.Host.nuspec" ] @@ -9716,6 +9775,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.TagHelpers.xml", "lib/net451/Microsoft.AspNet.Mvc.TagHelpers.dll", "lib/net451/Microsoft.AspNet.Mvc.TagHelpers.xml", + "Microsoft.AspNet.Mvc.TagHelpers.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.TagHelpers.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.TagHelpers.nuspec" ] @@ -9728,6 +9788,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Mvc.ViewFeatures.xml", "lib/net451/Microsoft.AspNet.Mvc.ViewFeatures.dll", "lib/net451/Microsoft.AspNet.Mvc.ViewFeatures.xml", + "Microsoft.AspNet.Mvc.ViewFeatures.6.0.0-rc1-final.nupkg", "Microsoft.AspNet.Mvc.ViewFeatures.6.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Mvc.ViewFeatures.nuspec" ] @@ -9740,6 +9801,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Owin.xml", "lib/net451/Microsoft.AspNet.Owin.dll", "lib/net451/Microsoft.AspNet.Owin.xml", + "Microsoft.AspNet.Owin.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Owin.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Owin.nuspec" ] @@ -9752,6 +9814,7 @@ "lib/dotnet5.4/Microsoft.AspNet.PageExecutionInstrumentation.Interfaces.xml", "lib/net451/Microsoft.AspNet.PageExecutionInstrumentation.Interfaces.dll", "lib/net451/Microsoft.AspNet.PageExecutionInstrumentation.Interfaces.xml", + "Microsoft.AspNet.PageExecutionInstrumentation.Interfaces.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.PageExecutionInstrumentation.Interfaces.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.PageExecutionInstrumentation.Interfaces.nuspec" ] @@ -9764,6 +9827,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Razor.xml", "lib/net451/Microsoft.AspNet.Razor.dll", "lib/net451/Microsoft.AspNet.Razor.xml", + "Microsoft.AspNet.Razor.4.0.0-rc1-final.nupkg", "Microsoft.AspNet.Razor.4.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Razor.nuspec" ] @@ -9776,6 +9840,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Razor.Runtime.xml", "lib/net451/Microsoft.AspNet.Razor.Runtime.dll", "lib/net451/Microsoft.AspNet.Razor.Runtime.xml", + "Microsoft.AspNet.Razor.Runtime.4.0.0-rc1-final.nupkg", "Microsoft.AspNet.Razor.Runtime.4.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Razor.Runtime.nuspec" ] @@ -9788,6 +9853,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Razor.Runtime.Precompilation.xml", "lib/net451/Microsoft.AspNet.Razor.Runtime.Precompilation.dll", "lib/net451/Microsoft.AspNet.Razor.Runtime.Precompilation.xml", + "Microsoft.AspNet.Razor.Runtime.Precompilation.4.0.0-rc1-final.nupkg", "Microsoft.AspNet.Razor.Runtime.Precompilation.4.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Razor.Runtime.Precompilation.nuspec" ] @@ -9800,6 +9866,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Routing.xml", "lib/net451/Microsoft.AspNet.Routing.dll", "lib/net451/Microsoft.AspNet.Routing.xml", + "Microsoft.AspNet.Routing.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Routing.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Routing.nuspec" ] @@ -9816,6 +9883,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Server.Kestrel.xml", "lib/net451/Microsoft.AspNet.Server.Kestrel.dll", "lib/net451/Microsoft.AspNet.Server.Kestrel.xml", + "Microsoft.AspNet.Server.Kestrel.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Server.Kestrel.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Server.Kestrel.nuspec", "runtimes/osx/native/libuv.dylib", @@ -9837,6 +9905,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Server.WebListener.xml", "lib/net451/Microsoft.AspNet.Server.WebListener.dll", "lib/net451/Microsoft.AspNet.Server.WebListener.xml", + "Microsoft.AspNet.Server.WebListener.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Server.WebListener.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Server.WebListener.nuspec" ] @@ -9849,6 +9918,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Session.xml", "lib/net451/Microsoft.AspNet.Session.dll", "lib/net451/Microsoft.AspNet.Session.xml", + "Microsoft.AspNet.Session.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Session.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Session.nuspec" ] @@ -9859,6 +9929,7 @@ "files": [ "lib/net45/Microsoft.AspNet.SignalR.Core.dll", "lib/net45/Microsoft.AspNet.SignalR.Core.xml", + "Microsoft.AspNet.SignalR.Core.2.2.0.nupkg", "Microsoft.AspNet.SignalR.Core.2.2.0.nupkg.sha512", "Microsoft.AspNet.SignalR.Core.nuspec" ] @@ -9869,6 +9940,7 @@ "files": [ "content/Scripts/jquery.signalR-2.2.0.js", "content/Scripts/jquery.signalR-2.2.0.min.js", + "Microsoft.AspNet.SignalR.JS.2.2.0.nupkg", "Microsoft.AspNet.SignalR.JS.2.2.0.nupkg.sha512", "Microsoft.AspNet.SignalR.JS.nuspec" ] @@ -9881,6 +9953,7 @@ "lib/net40/Microsoft.AspNet.SignalR.Owin.xml", "lib/net45/Microsoft.AspNet.SignalR.Owin.dll", "lib/net45/Microsoft.AspNet.SignalR.Owin.xml", + "Microsoft.AspNet.SignalR.Owin.1.2.2.nupkg", "Microsoft.AspNet.SignalR.Owin.1.2.2.nupkg.sha512", "Microsoft.AspNet.SignalR.Owin.nuspec" ] @@ -9893,6 +9966,7 @@ "lib/dotnet5.4/Microsoft.AspNet.StaticFiles.xml", "lib/net451/Microsoft.AspNet.StaticFiles.dll", "lib/net451/Microsoft.AspNet.StaticFiles.xml", + "Microsoft.AspNet.StaticFiles.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.StaticFiles.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.StaticFiles.nuspec" ] @@ -9908,6 +9982,7 @@ "lib/dotnet5.4/Microsoft.AspNet.Tooling.Razor.xml", "lib/net451/Microsoft.AspNet.Tooling.Razor.dll", "lib/net451/Microsoft.AspNet.Tooling.Razor.xml", + "Microsoft.AspNet.Tooling.Razor.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.Tooling.Razor.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.Tooling.Razor.nuspec" ] @@ -9918,6 +9993,7 @@ "files": [ "lib/net40/System.Web.Optimization.dll", "lib/net40/system.web.optimization.xml", + "Microsoft.AspNet.Web.Optimization.1.1.3.nupkg", "Microsoft.AspNet.Web.Optimization.1.1.3.nupkg.sha512", "Microsoft.AspNet.Web.Optimization.nuspec" ] @@ -9930,6 +10006,7 @@ "lib/dotnet5.4/Microsoft.AspNet.WebSockets.Protocol.xml", "lib/net451/Microsoft.AspNet.WebSockets.Protocol.dll", "lib/net451/Microsoft.AspNet.WebSockets.Protocol.xml", + "Microsoft.AspNet.WebSockets.Protocol.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.WebSockets.Protocol.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.WebSockets.Protocol.nuspec" ] @@ -9942,6 +10019,7 @@ "lib/dotnet5.4/Microsoft.AspNet.WebSockets.Server.xml", "lib/net451/Microsoft.AspNet.WebSockets.Server.dll", "lib/net451/Microsoft.AspNet.WebSockets.Server.xml", + "Microsoft.AspNet.WebSockets.Server.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.WebSockets.Server.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.WebSockets.Server.nuspec" ] @@ -9954,6 +10032,7 @@ "lib/dotnet5.4/Microsoft.AspNet.WebUtilities.xml", "lib/net451/Microsoft.AspNet.WebUtilities.dll", "lib/net451/Microsoft.AspNet.WebUtilities.xml", + "Microsoft.AspNet.WebUtilities.1.0.0-rc1-final.nupkg", "Microsoft.AspNet.WebUtilities.1.0.0-rc1-final.nupkg.sha512", "Microsoft.AspNet.WebUtilities.nuspec" ] @@ -9963,6 +10042,7 @@ "sha512": "HLC6HZEnJpRX6HFHAYngQEYSx30Py0r4Jcl2kP/KOR4Ctc1oDLoDDCKc5y7NE/Rck7Hj+2tZ0RO8cDvtyMOlRQ==", "files": [ "content/Readme.txt", + "Microsoft.AspNetCore.Authentication.Cookies.0.0.1-alpha.nupkg", "Microsoft.AspNetCore.Authentication.Cookies.0.0.1-alpha.nupkg.sha512", "Microsoft.AspNetCore.Authentication.Cookies.nuspec" ] @@ -9982,6 +10062,7 @@ "sha512": "VYVragg1EADQIdmMzgmttXXk1wk8D054oH26fG9p/cpBzQuYf0i2TsgkVfYuA+xF0kPdBeE1r6s4pLgbMLoHNQ==", "files": [ "content/Readme.txt", + "Microsoft.AspNetCore.Authentication.OpenIdConnect.0.0.1-alpha.nupkg", "Microsoft.AspNetCore.Authentication.OpenIdConnect.0.0.1-alpha.nupkg.sha512", "Microsoft.AspNetCore.Authentication.OpenIdConnect.nuspec" ] @@ -9994,6 +10075,7 @@ "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", + "Microsoft.CodeAnalysis.Analyzers.1.0.0.nupkg", "Microsoft.CodeAnalysis.Analyzers.1.0.0.nupkg.sha512", "Microsoft.CodeAnalysis.Analyzers.nuspec", "ThirdPartyNotices.rtf", @@ -10009,6 +10091,7 @@ "lib/net45/Microsoft.CodeAnalysis.xml", "lib/portable-net45+win8/Microsoft.CodeAnalysis.dll", "lib/portable-net45+win8/Microsoft.CodeAnalysis.xml", + "Microsoft.CodeAnalysis.Common.1.1.0-rc1-20151109-01.nupkg", "Microsoft.CodeAnalysis.Common.1.1.0-rc1-20151109-01.nupkg.sha512", "Microsoft.CodeAnalysis.Common.nuspec", "ThirdPartyNotices.rtf" @@ -10022,6 +10105,7 @@ "lib/net45/Microsoft.CodeAnalysis.CSharp.xml", "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll", "lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml", + "Microsoft.CodeAnalysis.CSharp.1.1.0-rc1-20151109-01.nupkg", "Microsoft.CodeAnalysis.CSharp.1.1.0-rc1-20151109-01.nupkg.sha512", "Microsoft.CodeAnalysis.CSharp.nuspec", "ThirdPartyNotices.rtf" @@ -10042,6 +10126,7 @@ "lib/net451/Microsoft.Data.Sqlite.xml", "lib/netcore50/Microsoft.Data.Sqlite.dll", "lib/netcore50/Microsoft.Data.Sqlite.xml", + "Microsoft.Data.Sqlite.1.0.0-rc1-final.nupkg", "Microsoft.Data.Sqlite.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Data.Sqlite.nuspec", "runtimes/win7-x64/native/sqlite3.dll", @@ -10056,6 +10141,7 @@ "lib/dotnet5.4/Microsoft.Dnx.Compilation.Abstractions.xml", "lib/net451/Microsoft.Dnx.Compilation.Abstractions.dll", "lib/net451/Microsoft.Dnx.Compilation.Abstractions.xml", + "Microsoft.Dnx.Compilation.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.Dnx.Compilation.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Dnx.Compilation.Abstractions.nuspec" ] @@ -10068,6 +10154,7 @@ "lib/dotnet5.4/Microsoft.Dnx.Compilation.CSharp.Abstractions.xml", "lib/net451/Microsoft.Dnx.Compilation.CSharp.Abstractions.dll", "lib/net451/Microsoft.Dnx.Compilation.CSharp.Abstractions.xml", + "Microsoft.Dnx.Compilation.CSharp.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.Dnx.Compilation.CSharp.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Dnx.Compilation.CSharp.Abstractions.nuspec" ] @@ -10080,6 +10167,7 @@ "lib/dotnet5.4/Microsoft.Dnx.Compilation.CSharp.Common.xml", "lib/net451/Microsoft.Dnx.Compilation.CSharp.Common.dll", "lib/net451/Microsoft.Dnx.Compilation.CSharp.Common.xml", + "Microsoft.Dnx.Compilation.CSharp.Common.1.0.0-rc1-final.nupkg", "Microsoft.Dnx.Compilation.CSharp.Common.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Dnx.Compilation.CSharp.Common.nuspec" ] @@ -10094,6 +10182,7 @@ "lib/net451/Microsoft.Extensions.Caching.Abstractions.xml", "lib/netcore50/Microsoft.Extensions.Caching.Abstractions.dll", "lib/netcore50/Microsoft.Extensions.Caching.Abstractions.xml", + "Microsoft.Extensions.Caching.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Caching.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Caching.Abstractions.nuspec" ] @@ -10108,6 +10197,7 @@ "lib/net451/Microsoft.Extensions.Caching.Memory.xml", "lib/netcore50/Microsoft.Extensions.Caching.Memory.dll", "lib/netcore50/Microsoft.Extensions.Caching.Memory.xml", + "Microsoft.Extensions.Caching.Memory.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Caching.Memory.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Caching.Memory.nuspec" ] @@ -10120,6 +10210,7 @@ "lib/dnx451/Microsoft.Extensions.CodeGeneration.xml", "lib/dnxcore50/Microsoft.Extensions.CodeGeneration.dll", "lib/dnxcore50/Microsoft.Extensions.CodeGeneration.xml", + "Microsoft.Extensions.CodeGeneration.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.CodeGeneration.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.CodeGeneration.nuspec" ] @@ -10132,6 +10223,7 @@ "lib/dnx451/Microsoft.Extensions.CodeGeneration.Core.xml", "lib/dnxcore50/Microsoft.Extensions.CodeGeneration.Core.dll", "lib/dnxcore50/Microsoft.Extensions.CodeGeneration.Core.xml", + "Microsoft.Extensions.CodeGeneration.Core.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.CodeGeneration.Core.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.CodeGeneration.Core.nuspec" ] @@ -10144,6 +10236,7 @@ "lib/dnx451/Microsoft.Extensions.CodeGeneration.EntityFramework.xml", "lib/dnxcore50/Microsoft.Extensions.CodeGeneration.EntityFramework.dll", "lib/dnxcore50/Microsoft.Extensions.CodeGeneration.EntityFramework.xml", + "Microsoft.Extensions.CodeGeneration.EntityFramework.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.CodeGeneration.EntityFramework.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.CodeGeneration.EntityFramework.nuspec", "Templates/DbContext/NewLocalDbContext.cshtml" @@ -10157,6 +10250,7 @@ "lib/dnx451/Microsoft.Extensions.CodeGeneration.Templating.xml", "lib/dnxcore50/Microsoft.Extensions.CodeGeneration.Templating.dll", "lib/dnxcore50/Microsoft.Extensions.CodeGeneration.Templating.xml", + "Microsoft.Extensions.CodeGeneration.Templating.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.CodeGeneration.Templating.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.CodeGeneration.Templating.nuspec" ] @@ -10169,6 +10263,7 @@ "lib/dnx451/Microsoft.Extensions.CodeGenerators.Mvc.xml", "lib/dnxcore50/Microsoft.Extensions.CodeGenerators.Mvc.dll", "lib/dnxcore50/Microsoft.Extensions.CodeGenerators.Mvc.xml", + "Microsoft.Extensions.CodeGenerators.Mvc.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.CodeGenerators.Mvc.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.CodeGenerators.Mvc.nuspec", "Templates/ControllerGenerator/ApiControllerWithContext.cshtml", @@ -10214,6 +10309,7 @@ "lib/net451/Microsoft.Extensions.Configuration.xml", "lib/netcore50/Microsoft.Extensions.Configuration.dll", "lib/netcore50/Microsoft.Extensions.Configuration.xml", + "Microsoft.Extensions.Configuration.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Configuration.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Configuration.nuspec" ] @@ -10228,6 +10324,7 @@ "lib/net451/Microsoft.Extensions.Configuration.Abstractions.xml", "lib/netcore50/Microsoft.Extensions.Configuration.Abstractions.dll", "lib/netcore50/Microsoft.Extensions.Configuration.Abstractions.xml", + "Microsoft.Extensions.Configuration.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Configuration.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Configuration.Abstractions.nuspec" ] @@ -10242,6 +10339,7 @@ "lib/net451/Microsoft.Extensions.Configuration.Binder.xml", "lib/netcore50/Microsoft.Extensions.Configuration.Binder.dll", "lib/netcore50/Microsoft.Extensions.Configuration.Binder.xml", + "Microsoft.Extensions.Configuration.Binder.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Configuration.Binder.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Configuration.Binder.nuspec" ] @@ -10256,6 +10354,7 @@ "lib/net451/Microsoft.Extensions.Configuration.CommandLine.xml", "lib/netcore50/Microsoft.Extensions.Configuration.CommandLine.dll", "lib/netcore50/Microsoft.Extensions.Configuration.CommandLine.xml", + "Microsoft.Extensions.Configuration.CommandLine.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Configuration.CommandLine.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Configuration.CommandLine.nuspec" ] @@ -10270,6 +10369,7 @@ "lib/net451/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", "lib/netcore50/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", "lib/netcore50/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "Microsoft.Extensions.Configuration.EnvironmentVariables.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Configuration.EnvironmentVariables.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Configuration.EnvironmentVariables.nuspec" ] @@ -10284,6 +10384,7 @@ "lib/net451/Microsoft.Extensions.Configuration.FileExtensions.xml", "lib/netcore50/Microsoft.Extensions.Configuration.FileExtensions.dll", "lib/netcore50/Microsoft.Extensions.Configuration.FileExtensions.xml", + "Microsoft.Extensions.Configuration.FileExtensions.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Configuration.FileExtensions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Configuration.FileExtensions.nuspec" ] @@ -10298,6 +10399,7 @@ "lib/net451/Microsoft.Extensions.Configuration.FileProviderExtensions.xml", "lib/netcore50/Microsoft.Extensions.Configuration.FileProviderExtensions.dll", "lib/netcore50/Microsoft.Extensions.Configuration.FileProviderExtensions.xml", + "Microsoft.Extensions.Configuration.FileProviderExtensions.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Configuration.FileProviderExtensions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Configuration.FileProviderExtensions.nuspec" ] @@ -10312,6 +10414,7 @@ "lib/net451/Microsoft.Extensions.Configuration.Json.xml", "lib/netcore50/Microsoft.Extensions.Configuration.Json.dll", "lib/netcore50/Microsoft.Extensions.Configuration.Json.xml", + "Microsoft.Extensions.Configuration.Json.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Configuration.Json.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Configuration.Json.nuspec" ] @@ -10324,6 +10427,7 @@ "lib/dotnet5.4/Microsoft.Extensions.Configuration.UserSecrets.xml", "lib/net451/Microsoft.Extensions.Configuration.UserSecrets.dll", "lib/net451/Microsoft.Extensions.Configuration.UserSecrets.xml", + "Microsoft.Extensions.Configuration.UserSecrets.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Configuration.UserSecrets.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Configuration.UserSecrets.nuspec" ] @@ -10338,6 +10442,7 @@ "lib/net451/Microsoft.Extensions.DependencyInjection.xml", "lib/netcore50/Microsoft.Extensions.DependencyInjection.dll", "lib/netcore50/Microsoft.Extensions.DependencyInjection.xml", + "Microsoft.Extensions.DependencyInjection.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.DependencyInjection.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.DependencyInjection.nuspec" ] @@ -10352,6 +10457,7 @@ "lib/net451/Microsoft.Extensions.DependencyInjection.Abstractions.xml", "lib/netcore50/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/netcore50/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "Microsoft.Extensions.DependencyInjection.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.DependencyInjection.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.DependencyInjection.Abstractions.nuspec" ] @@ -10364,6 +10470,7 @@ "lib/dotnet5.4/Microsoft.Extensions.FileSystemGlobbing.xml", "lib/net451/Microsoft.Extensions.FileSystemGlobbing.dll", "lib/net451/Microsoft.Extensions.FileSystemGlobbing.xml", + "Microsoft.Extensions.FileSystemGlobbing.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.FileSystemGlobbing.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.FileSystemGlobbing.nuspec" ] @@ -10376,6 +10483,7 @@ "lib/dotnet5.4/Microsoft.Extensions.Globalization.CultureInfoCache.xml", "lib/net451/Microsoft.Extensions.Globalization.CultureInfoCache.dll", "lib/net451/Microsoft.Extensions.Globalization.CultureInfoCache.xml", + "Microsoft.Extensions.Globalization.CultureInfoCache.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Globalization.CultureInfoCache.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Globalization.CultureInfoCache.nuspec" ] @@ -10388,6 +10496,7 @@ "lib/dotnet5.4/Microsoft.Extensions.Localization.xml", "lib/net451/Microsoft.Extensions.Localization.dll", "lib/net451/Microsoft.Extensions.Localization.xml", + "Microsoft.Extensions.Localization.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Localization.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Localization.nuspec" ] @@ -10400,6 +10509,7 @@ "lib/dotnet5.4/Microsoft.Extensions.Localization.Abstractions.xml", "lib/net451/Microsoft.Extensions.Localization.Abstractions.dll", "lib/net451/Microsoft.Extensions.Localization.Abstractions.xml", + "Microsoft.Extensions.Localization.Abstractions.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Localization.Abstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Localization.Abstractions.nuspec" ] @@ -10414,6 +10524,7 @@ "lib/net451/Microsoft.Extensions.Logging.xml", "lib/netcore50/Microsoft.Extensions.Logging.dll", "lib/netcore50/Microsoft.Extensions.Logging.xml", + "Microsoft.Extensions.Logging.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Logging.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Logging.nuspec" ] @@ -10443,6 +10554,7 @@ "lib/net451/Microsoft.Extensions.Logging.Console.xml", "lib/netcore50/Microsoft.Extensions.Logging.Console.dll", "lib/netcore50/Microsoft.Extensions.Logging.Console.xml", + "Microsoft.Extensions.Logging.Console.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Logging.Console.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Logging.Console.nuspec" ] @@ -10457,6 +10569,7 @@ "lib/net451/Microsoft.Extensions.Logging.Debug.xml", "lib/netcore50/Microsoft.Extensions.Logging.Debug.dll", "lib/netcore50/Microsoft.Extensions.Logging.Debug.xml", + "Microsoft.Extensions.Logging.Debug.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.Logging.Debug.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.Logging.Debug.nuspec" ] @@ -10469,6 +10582,7 @@ "lib/dotnet5.4/Microsoft.Extensions.MemoryPool.xml", "lib/net451/Microsoft.Extensions.MemoryPool.dll", "lib/net451/Microsoft.Extensions.MemoryPool.xml", + "Microsoft.Extensions.MemoryPool.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.MemoryPool.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.MemoryPool.nuspec" ] @@ -10478,6 +10592,7 @@ "sha512": "5zH0KTUqMzt66T9dcJy2x7imjsAHgqctudJGWDKHtNtyKsedyv0xAc7PLStFfrkZQjlqtn/X8QpHnsGEl+fMwQ==", "files": [ "content/Readme.txt", + "Microsoft.Extensions.Options.0.0.1-alpha.nupkg", "Microsoft.Extensions.Options.0.0.1-alpha.nupkg.sha512", "Microsoft.Extensions.Options.nuspec" ] @@ -10492,6 +10607,7 @@ "lib/net451/Microsoft.Extensions.OptionsModel.xml", "lib/netcore50/Microsoft.Extensions.OptionsModel.dll", "lib/netcore50/Microsoft.Extensions.OptionsModel.xml", + "Microsoft.Extensions.OptionsModel.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.OptionsModel.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.OptionsModel.nuspec" ] @@ -10504,6 +10620,7 @@ "lib/dotnet5.4/Microsoft.Extensions.PlatformAbstractions.xml", "lib/net451/Microsoft.Extensions.PlatformAbstractions.dll", "lib/net451/Microsoft.Extensions.PlatformAbstractions.xml", + "Microsoft.Extensions.PlatformAbstractions.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.PlatformAbstractions.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.PlatformAbstractions.nuspec" ] @@ -10531,6 +10648,7 @@ "lib/dotnet5.4/Microsoft.Extensions.WebEncoders.xml", "lib/net451/Microsoft.Extensions.WebEncoders.dll", "lib/net451/Microsoft.Extensions.WebEncoders.xml", + "Microsoft.Extensions.WebEncoders.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.WebEncoders.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.WebEncoders.nuspec" ] @@ -10543,6 +10661,7 @@ "lib/dotnet5.4/Microsoft.Extensions.WebEncoders.Core.xml", "lib/net451/Microsoft.Extensions.WebEncoders.Core.dll", "lib/net451/Microsoft.Extensions.WebEncoders.Core.xml", + "Microsoft.Extensions.WebEncoders.Core.1.0.0-rc1-final.nupkg", "Microsoft.Extensions.WebEncoders.Core.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Extensions.WebEncoders.Core.nuspec" ] @@ -10559,6 +10678,7 @@ "lib/dotnet/Microsoft.Framework.Configuration.xml", "lib/net45/Microsoft.Framework.Configuration.dll", "lib/net45/Microsoft.Framework.Configuration.xml", + "Microsoft.Framework.Configuration.1.0.0-beta8.nupkg", "Microsoft.Framework.Configuration.1.0.0-beta8.nupkg.sha512", "Microsoft.Framework.Configuration.nuspec" ] @@ -10575,6 +10695,7 @@ "lib/dotnet/Microsoft.Framework.Configuration.Abstractions.xml", "lib/net45/Microsoft.Framework.Configuration.Abstractions.dll", "lib/net45/Microsoft.Framework.Configuration.Abstractions.xml", + "Microsoft.Framework.Configuration.Abstractions.1.0.0-beta8.nupkg", "Microsoft.Framework.Configuration.Abstractions.1.0.0-beta8.nupkg.sha512", "Microsoft.Framework.Configuration.Abstractions.nuspec" ] @@ -10591,6 +10712,7 @@ "lib/dotnet/Microsoft.Framework.Configuration.Binder.xml", "lib/net45/Microsoft.Framework.Configuration.Binder.dll", "lib/net45/Microsoft.Framework.Configuration.Binder.xml", + "Microsoft.Framework.Configuration.Binder.1.0.0-beta8.nupkg", "Microsoft.Framework.Configuration.Binder.1.0.0-beta8.nupkg.sha512", "Microsoft.Framework.Configuration.Binder.nuspec" ] @@ -10605,6 +10727,7 @@ "lib/dotnet/Microsoft.Framework.Configuration.FileExtensions.xml", "lib/net45/Microsoft.Framework.Configuration.FileExtensions.dll", "lib/net45/Microsoft.Framework.Configuration.FileExtensions.xml", + "Microsoft.Framework.Configuration.FileExtensions.1.0.0-beta8.nupkg", "Microsoft.Framework.Configuration.FileExtensions.1.0.0-beta8.nupkg.sha512", "Microsoft.Framework.Configuration.FileExtensions.nuspec" ] @@ -10621,6 +10744,7 @@ "lib/dotnet/Microsoft.Framework.Configuration.Json.xml", "lib/net45/Microsoft.Framework.Configuration.Json.dll", "lib/net45/Microsoft.Framework.Configuration.Json.xml", + "Microsoft.Framework.Configuration.Json.1.0.0-beta8.nupkg", "Microsoft.Framework.Configuration.Json.1.0.0-beta8.nupkg.sha512", "Microsoft.Framework.Configuration.Json.nuspec" ] @@ -10637,6 +10761,7 @@ "lib/net45/Microsoft.Framework.ConfigurationModel.xml", "lib/portable-net451+win81+wpa81/Microsoft.Framework.ConfigurationModel.dll", "lib/portable-net451+win81+wpa81/Microsoft.Framework.ConfigurationModel.xml", + "Microsoft.Framework.ConfigurationModel.1.0.0-beta4.nupkg", "Microsoft.Framework.ConfigurationModel.1.0.0-beta4.nupkg.sha512", "Microsoft.Framework.ConfigurationModel.nuspec" ] @@ -10653,6 +10778,7 @@ "lib/net45/Microsoft.Framework.ConfigurationModel.Interfaces.xml", "lib/portable-net451+win81+wpa81/Microsoft.Framework.ConfigurationModel.Interfaces.dll", "lib/portable-net451+win81+wpa81/Microsoft.Framework.ConfigurationModel.Interfaces.xml", + "Microsoft.Framework.ConfigurationModel.Interfaces.1.0.0-beta4.nupkg", "Microsoft.Framework.ConfigurationModel.Interfaces.1.0.0-beta4.nupkg.sha512", "Microsoft.Framework.ConfigurationModel.Interfaces.nuspec" ] @@ -10667,6 +10793,7 @@ "lib/dnxcore50/Microsoft.Framework.ConfigurationModel.Json.xml", "lib/net45/Microsoft.Framework.ConfigurationModel.Json.dll", "lib/net45/Microsoft.Framework.ConfigurationModel.Json.xml", + "Microsoft.Framework.ConfigurationModel.Json.1.0.0-beta4.nupkg", "Microsoft.Framework.ConfigurationModel.Json.1.0.0-beta4.nupkg.sha512", "Microsoft.Framework.ConfigurationModel.Json.nuspec" ] @@ -10683,6 +10810,7 @@ "lib/dotnet/Microsoft.Framework.DependencyInjection.xml", "lib/net45/Microsoft.Framework.DependencyInjection.dll", "lib/net45/Microsoft.Framework.DependencyInjection.xml", + "Microsoft.Framework.DependencyInjection.1.0.0-beta8.nupkg", "Microsoft.Framework.DependencyInjection.1.0.0-beta8.nupkg.sha512", "Microsoft.Framework.DependencyInjection.nuspec" ] @@ -10699,6 +10827,7 @@ "lib/dotnet/Microsoft.Framework.DependencyInjection.Abstractions.xml", "lib/net45/Microsoft.Framework.DependencyInjection.Abstractions.dll", "lib/net45/Microsoft.Framework.DependencyInjection.Abstractions.xml", + "Microsoft.Framework.DependencyInjection.Abstractions.1.0.0-beta8.nupkg", "Microsoft.Framework.DependencyInjection.Abstractions.1.0.0-beta8.nupkg.sha512", "Microsoft.Framework.DependencyInjection.Abstractions.nuspec" ] @@ -10711,6 +10840,7 @@ "lib/dnx451/Microsoft.Framework.Runtime.Interfaces.xml", "lib/dnxcore50/Microsoft.Framework.Runtime.Interfaces.dll", "lib/dnxcore50/Microsoft.Framework.Runtime.Interfaces.xml", + "Microsoft.Framework.Runtime.Interfaces.1.0.0-beta4.nupkg", "Microsoft.Framework.Runtime.Interfaces.1.0.0-beta4.nupkg.sha512", "Microsoft.Framework.Runtime.Interfaces.nuspec" ] @@ -10723,6 +10853,7 @@ "lib/dotnet5.4/Microsoft.IdentityModel.Logging.xml", "lib/net451/Microsoft.IdentityModel.Logging.dll", "lib/net451/Microsoft.IdentityModel.Logging.xml", + "Microsoft.IdentityModel.Logging.1.0.0-rc1-211161024.nupkg", "Microsoft.IdentityModel.Logging.1.0.0-rc1-211161024.nupkg.sha512", "Microsoft.IdentityModel.Logging.nuspec" ] @@ -10735,6 +10866,7 @@ "lib/dotnet5.4/Microsoft.IdentityModel.Protocols.xml", "lib/net451/Microsoft.IdentityModel.Protocols.dll", "lib/net451/Microsoft.IdentityModel.Protocols.xml", + "Microsoft.IdentityModel.Protocols.2.0.0-rc1-211161024.nupkg", "Microsoft.IdentityModel.Protocols.2.0.0-rc1-211161024.nupkg.sha512", "Microsoft.IdentityModel.Protocols.nuspec" ] @@ -10747,6 +10879,7 @@ "lib/dotnet5.4/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", "lib/net451/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", "lib/net451/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "Microsoft.IdentityModel.Protocols.OpenIdConnect.2.0.0-rc1-211161024.nupkg", "Microsoft.IdentityModel.Protocols.OpenIdConnect.2.0.0-rc1-211161024.nupkg.sha512", "Microsoft.IdentityModel.Protocols.OpenIdConnect.nuspec" ] @@ -10772,6 +10905,7 @@ "lib/dotnet5.4/Microsoft.Net.Http.Server.xml", "lib/net451/Microsoft.Net.Http.Server.dll", "lib/net451/Microsoft.Net.Http.Server.xml", + "Microsoft.Net.Http.Server.1.0.0-rc1-final.nupkg", "Microsoft.Net.Http.Server.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Net.Http.Server.nuspec" ] @@ -10784,6 +10918,7 @@ "lib/dotnet5.4/Microsoft.Net.WebSockets.xml", "lib/net451/Microsoft.Net.WebSockets.dll", "lib/net451/Microsoft.Net.WebSockets.xml", + "Microsoft.Net.WebSockets.1.0.0-rc1-final.nupkg", "Microsoft.Net.WebSockets.1.0.0-rc1-final.nupkg.sha512", "Microsoft.Net.WebSockets.nuspec" ] @@ -10792,6 +10927,7 @@ "type": "package", "sha512": "YPVzF1z1qhI3am4/I3EWEjn5hxm1wnIbHTRp6nrfKOoj0NBGtubVTTQmC3l5VZIbwmygiMVbWdbFhzJwWJXNEw==", "files": [ + "Microsoft.NETCore.Platforms.1.0.1-beta-23516.nupkg", "Microsoft.NETCore.Platforms.1.0.1-beta-23516.nupkg.sha512", "Microsoft.NETCore.Platforms.nuspec", "runtime.json" @@ -10801,6 +10937,7 @@ "type": "package", "sha512": "11J+6atPf0UYQnpr8aKy6Xx+O9rAf/46OyODFY8gFbKkW/PVIh7iSHziukpvWZ+hI/ieFklGMopDU1MiUELutQ==", "files": [ + "Microsoft.NETCore.Targets.1.0.1-beta-23516.nupkg", "Microsoft.NETCore.Targets.1.0.1-beta-23516.nupkg.sha512", "Microsoft.NETCore.Targets.nuspec", "runtime.json" @@ -10814,6 +10951,7 @@ "lib/net40/Microsoft.Owin.XML", "lib/net45/Microsoft.Owin.dll", "lib/net45/Microsoft.Owin.XML", + "Microsoft.Owin.2.1.0.nupkg", "Microsoft.Owin.2.1.0.nupkg.sha512", "Microsoft.Owin.nuspec" ] @@ -10824,6 +10962,7 @@ "files": [ "lib/net45/Microsoft.Owin.Security.dll", "lib/net45/Microsoft.Owin.Security.XML", + "Microsoft.Owin.Security.2.1.0.nupkg", "Microsoft.Owin.Security.2.1.0.nupkg.sha512", "Microsoft.Owin.Security.nuspec" ] @@ -10833,6 +10972,7 @@ "sha512": "FNmvLn5m2LTU/Rs2KWVo0SIIh9Ek+U0ojex7xeDaSHw/zgEP77A8vY5cVWgUtBGS8MJfDGNn8rpXJWEIQaPwTg==", "files": [ "lib/net40/Microsoft.Web.Infrastructure.dll", + "Microsoft.Web.Infrastructure.1.0.0.nupkg", "Microsoft.Web.Infrastructure.1.0.0.nupkg.sha512", "Microsoft.Web.Infrastructure.nuspec" ] @@ -10871,6 +11011,7 @@ "lib/Xamarin.iOS10/BouncyCastle.dll", "lib/Xamarin.iOS10/MimeKit.dll", "lib/Xamarin.iOS10/MimeKit.xml", + "MimeKit.1.3.0-beta7.nupkg", "MimeKit.1.3.0-beta7.nupkg.sha512", "MimeKit.nuspec" ] @@ -10891,6 +11032,7 @@ "lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.xml", "lib/portable-net45+wp80+win8+wpa81+dnxcore50/Newtonsoft.Json.dll", "lib/portable-net45+wp80+win8+wpa81+dnxcore50/Newtonsoft.Json.xml", + "Newtonsoft.Json.7.0.1.nupkg", "Newtonsoft.Json.7.0.1.nupkg.sha512", "Newtonsoft.Json.nuspec", "tools/install.ps1" @@ -10911,6 +11053,7 @@ "lib/net45/Npgsql.xml", "lib/net452/Npgsql.dll", "lib/net452/Npgsql.xml", + "Npgsql.3.1.0-alpha6.nupkg", "Npgsql.3.1.0-alpha6.nupkg.sha512", "Npgsql.nuspec" ] @@ -10920,6 +11063,7 @@ "sha512": "OseTFniKmyp76mEzOBwIKGBRS5eMoYNkMKaMXOpxx9jv88+b6mh1rSaw43vjBOItNhaLFG3d0a20PfHyibH5sw==", "files": [ "lib/net40/Owin.dll", + "Owin.1.0.0.nupkg", "Owin.1.0.0.nupkg.sha512", "Owin.nuspec" ] @@ -10929,6 +11073,7 @@ "sha512": "6l95DlflMld+OmzOGaw3T6Mb9rZrywO1pR8jbafyvu34FId4osC1oo5RfgQVY0rwHkeTG359U+X3BPL6vVRT8Q==", "files": [ "lib/net20/PayPalButtonManagerSDK.dll", + "PayPalButtonManagerSDK.2.10.109.nupkg", "PayPalButtonManagerSDK.2.10.109.nupkg.sha512", "PayPalButtonManagerSDK.nuspec" ] @@ -10942,6 +11087,7 @@ "lib/net40/PayPalCoreSDK.dll", "lib/net45/PayPalCoreSDK.dll", "lib/net451/PayPalCoreSDK.dll", + "PayPalCoreSDK.1.7.1.nupkg", "PayPalCoreSDK.1.7.1.nupkg.sha512", "PayPalCoreSDK.nuspec" ] @@ -10958,6 +11104,7 @@ "lib/net45/Remotion.Linq.xml", "lib/portable-net45+win+wpa81+wp80/Remotion.Linq.dll", "lib/portable-net45+win+wpa81+wp80/Remotion.Linq.xml", + "Remotion.Linq.2.0.1.nupkg", "Remotion.Linq.2.0.1.nupkg.sha512", "Remotion.Linq.nuspec" ] @@ -11018,6 +11165,7 @@ "lib/dotnet/System.Collections.Immutable.xml", "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml", + "System.Collections.Immutable.1.1.37.nupkg", "System.Collections.Immutable.1.1.37.nupkg.sha512", "System.Collections.Immutable.nuspec" ] @@ -11125,6 +11273,7 @@ "ref/wpa81/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", + "System.Diagnostics.Tracing.4.0.0.nupkg", "System.Diagnostics.Tracing.4.0.0.nupkg.sha512", "System.Diagnostics.Tracing.nuspec" ] @@ -11185,6 +11334,7 @@ "lib/dotnet5.4/System.IdentityModel.Tokens.xml", "lib/net451/System.IdentityModel.Tokens.dll", "lib/net451/System.IdentityModel.Tokens.xml", + "System.IdentityModel.Tokens.5.0.0-rc1-211161024.nupkg", "System.IdentityModel.Tokens.5.0.0-rc1-211161024.nupkg.sha512", "System.IdentityModel.Tokens.nuspec" ] @@ -11197,6 +11347,7 @@ "lib/dotnet5.4/System.IdentityModel.Tokens.Jwt.xml", "lib/net451/System.IdentityModel.Tokens.Jwt.dll", "lib/net451/System.IdentityModel.Tokens.Jwt.xml", + "System.IdentityModel.Tokens.Jwt.5.0.0-rc1-211161024.nupkg", "System.IdentityModel.Tokens.Jwt.5.0.0-rc1-211161024.nupkg.sha512", "System.IdentityModel.Tokens.Jwt.nuspec" ] @@ -11382,6 +11533,7 @@ "ref/wp80/_._", "ref/wpa81/_._", "runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.dll", + "System.Reflection.Extensions.4.0.0.nupkg", "System.Reflection.Extensions.4.0.0.nupkg.sha512", "System.Reflection.Extensions.nuspec" ] @@ -11428,6 +11580,7 @@ "ref/wp80/_._", "ref/wpa81/_._", "runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll", + "System.Reflection.Primitives.4.0.0.nupkg", "System.Reflection.Primitives.4.0.0.nupkg.sha512", "System.Reflection.Primitives.nuspec" ] @@ -11698,6 +11851,7 @@ "ref/wpa81/_._", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", + "System.Text.Encoding.Extensions.4.0.0.nupkg", "System.Text.Encoding.Extensions.4.0.0.nupkg.sha512", "System.Text.Encoding.Extensions.nuspec" ] @@ -11758,6 +11912,7 @@ "tools/install.ps1", "tools/uninstall.ps1", "tools/WG.exe", + "WebGrease.1.5.2.nupkg", "WebGrease.1.5.2.nupkg.sha512", "WebGrease.nuspec" ] @@ -11768,6 +11923,7 @@ "files": [ "lib/portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid/Zlib.Portable.dll", "lib/portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid/Zlib.Portable.xml", + "Zlib.Portable.Signed.1.11.0.nupkg", "Zlib.Portable.Signed.1.11.0.nupkg.sha512", "Zlib.Portable.Signed.nuspec" ] @@ -11788,15 +11944,15 @@ "Microsoft.AspNet.IISPlatformHandler >= 1.0.0-rc1-*", "Microsoft.AspNet.Mvc >= 6.0.0-rc1-*", "Microsoft.AspNet.Mvc.TagHelpers >= 6.0.0-rc1-*", - "Microsoft.AspNet.Server.Kestrel >= 1.0.0-rc1-*", + "Microsoft.AspNet.Server.Kestrel >= 1.0.0-rc1-final", "Microsoft.AspNet.StaticFiles >= 1.0.0-rc1-*", "Microsoft.AspNet.Tooling.Razor >= 1.0.0-rc1-*", "Microsoft.Extensions.Configuration.FileProviderExtensions >= 1.0.0-rc1-*", "Microsoft.Extensions.Configuration.Json >= 1.0.0-rc1-*", "Microsoft.Extensions.Configuration.Abstractions >= 1.0.0-rc1-final", "Microsoft.Extensions.Configuration.UserSecrets >= 1.0.0-rc1-*", - "Microsoft.Extensions.Logging >= 1.0.0-rc1-*", - "Microsoft.Extensions.Logging.Console >= 1.0.0-rc1-*", + "Microsoft.Extensions.Logging >= 1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Console >= 1.0.0-rc1-final", "Microsoft.Extensions.Logging.Debug >= 1.0.0-rc1-final", "Microsoft.Framework.DependencyInjection >= 1.0.0-beta8", "Microsoft.Extensions.DependencyInjection.Abstractions >= 1.0.0-rc1-final", @@ -11840,8 +11996,8 @@ "Microsoft.AspNet.DataProtection >= 1.0.0-rc1-final", "Microsoft.AspNet.DataProtection.SystemWeb >= 1.0.0-rc1-final", "Microsoft.AspNet.Authentication.JwtBearer >= 1.0.0-rc1-final", - "System.IdentityModel.Tokens >= 5.0.0-rc1-208241120", - "System.IdentityModel.Tokens.Jwt >= 5.0.0-rc1-208241120", + "System.IdentityModel.Tokens >= 5.0.0-rc1-211161024", + "System.IdentityModel.Tokens.Jwt >= 5.0.0-rc1-211161024", "Microsoft.AspNet.Authorization >= 1.0.0-rc1-final", "AspNet.Security.OpenIdConnect.Server >= 1.0.0-beta4" ], diff --git a/Yavsc/src/Controllers/AccountController.cs b/Yavsc/src/Controllers/AccountController.cs index 688a4831..f6c1eb69 100644 --- a/Yavsc/src/Controllers/AccountController.cs +++ b/Yavsc/src/Controllers/AccountController.cs @@ -136,7 +136,6 @@ namespace Yavsc.Controllers [ValidateAntiForgeryToken] public async Task LogOff(string returnUrl = null) { - await HttpContext.Authentication.SignOutAsync("ServerCookie"); await _signInManager.SignOutAsync(); _logger.LogInformation(4, "User logged out."); if (returnUrl==null) return RedirectToAction(nameof(HomeController.Index), "Home"); diff --git a/Yavsc/src/Controllers/BlogspotController.cs b/Yavsc/src/Controllers/BlogspotController.cs index 8c1d9b87..ad672c6b 100644 --- a/Yavsc/src/Controllers/BlogspotController.cs +++ b/Yavsc/src/Controllers/BlogspotController.cs @@ -92,14 +92,14 @@ namespace Yavsc.Controllers } // GET: Blog/Create - [Authorize("Authenticated")] + [Authorize()] public IActionResult Create() { return View(); } // POST: Blog/Create - [HttpPost, Authorize("Authenticated"), ValidateAntiForgeryToken] + [HttpPost, Authorize(), ValidateAntiForgeryToken] public IActionResult Create(Blog blog) { blog.modified = blog.posted = DateTime.Now; @@ -117,7 +117,7 @@ namespace Yavsc.Controllers _logger.LogWarning("Invalid Blog posted ..."); return View(blog); } - [Authorize("Authenticated")] + [Authorize()] // GET: Blog/Edit/5 public async Task Edit(long? id) { @@ -143,7 +143,7 @@ namespace Yavsc.Controllers // POST: Blog/Edit/5 [HttpPost] - [ValidateAntiForgeryToken,Authorize("Authenticated")] + [ValidateAntiForgeryToken,Authorize()] public IActionResult Edit(Blog blog) { if (ModelState.IsValid) @@ -166,7 +166,7 @@ namespace Yavsc.Controllers } // GET: Blog/Delete/5 - [ActionName("Delete"),Authorize("Authenticated")] + [ActionName("Delete"),Authorize()] public IActionResult Delete(long? id) { if (id == null) @@ -186,7 +186,7 @@ namespace Yavsc.Controllers } // POST: Blog/Delete/5 - [HttpPost, ActionName("Delete"), Authorize("Authenticated")] + [HttpPost, ActionName("Delete"), Authorize()] [ValidateAntiForgeryToken] public IActionResult DeleteConfirmed(long id) { diff --git a/Yavsc/src/Controllers/OAuthController.cs b/Yavsc/src/Controllers/OAuthController.cs index 6ff146c1..27e39911 100644 --- a/Yavsc/src/Controllers/OAuthController.cs +++ b/Yavsc/src/Controllers/OAuthController.cs @@ -26,6 +26,8 @@ namespace Yavsc.Controllers { ApplicationDbContext _context; UserManager _userManager; + + SiteSettings _siteSettings; ILogger _logger; private readonly SignInManager _signInManager; @@ -34,9 +36,11 @@ namespace Yavsc.Controllers public OAuthController(ApplicationDbContext context, SignInManager signInManager, IKeyManager keyManager, IOptions tokenOptions, UserManager userManager, + IOptions siteSettings, ILoggerFactory loggerFactory ) { + _siteSettings = siteSettings.Value; _context = context; _signInManager = signInManager; _tokenOptions = tokenOptions.Value; @@ -48,6 +52,7 @@ namespace Yavsc.Controllers [HttpGet("~/signin")] public ActionResult SignIn(string returnUrl = null, string target = null) { + _logger.LogWarning($"Singin wanted: returnUrl: {returnUrl} target: {target}"); // Note: the "returnUrl" parameter corresponds to the endpoint the user agent // will be redirected to after a successful authentication and not // the redirect_uri of the requesting client application. @@ -72,7 +77,7 @@ namespace Yavsc.Controllers [HttpGet("~/forbidden")] public ActionResult Forbidden(string returnUrl = null) { - return SignIn("/Account/ExternalLoginCallback",returnUrl); + return View(returnUrl); } [HttpPost("~/signin")] @@ -200,11 +205,12 @@ namespace Yavsc.Controllers }) }); } - // Note: ASOS automatically ensures that an application corresponds to the client_id specified // in the authorization request by calling IOpenIdConnectServerProvider.ValidateAuthorizationRequest. // In theory, this null check shouldn't be needed, but a race condition could occur if you // manually removed the application details from the database after the initial check made by ASOS. + /* FIXME response.ClientId && request.ClientId are null or empty here */ + _logger.LogInformation($"ensures that an application corresponds to the client_id specified ({request.ClientId})"); var application = await GetApplicationAsync(request.ClientId, cancellationToken); if (application == null) { @@ -217,10 +223,10 @@ namespace Yavsc.Controllers } // Note: in a real world application, you'd probably prefer creating a specific view model. - return View("Authorize", Tuple.Create(request, application)); + return View("Authorize", new AuthorisationView { Message = request, Application = application}); } - [Authorize, HttpPost("~/connect/authorize/accept"), ValidateAntiForgeryToken] + [HttpPost("~/connect/authorize/accept"), ValidateAntiForgeryToken] public async Task Accept(CancellationToken cancellationToken) { var response = HttpContext.GetOpenIdConnectResponse(); @@ -268,6 +274,7 @@ namespace Yavsc.Controllers var application = await GetApplicationAsync(request.ClientId, cancellationToken); if (application == null) { + _logger.LogError($"OidcError: {request.ClientId} {response.ClientId} "); return View("OidcError", new OpenIdConnectMessage { Error = OpenIdConnectConstants.Errors.InvalidClient, @@ -296,7 +303,7 @@ namespace Yavsc.Controllers // You can also limit the resources endpoints // the access token should be issued for: properties.SetResources(new[] { - "http://localhost:54540/" + _siteSettings.Audience }); // This call will instruct AspNet.Security.OpenIdConnect.Server to serialize @@ -312,7 +319,7 @@ namespace Yavsc.Controllers return new EmptyResult(); } - [Authorize, HttpPost("~/connect/authorize/deny"), ValidateAntiForgeryToken] + [HttpPost("~/connect/authorize/deny"), ValidateAntiForgeryToken] public IActionResult Deny(CancellationToken cancellationToken) { var response = HttpContext.GetOpenIdConnectResponse(); diff --git a/Yavsc/src/Providers/OAuthProvider.cs b/Yavsc/src/Providers/OAuthProvider.cs index 26cca142..c2727f3a 100644 --- a/Yavsc/src/Providers/OAuthProvider.cs +++ b/Yavsc/src/Providers/OAuthProvider.cs @@ -43,11 +43,11 @@ namespace Yavsc.Providers { } var database = context.HttpContext.RequestServices.GetRequiredService(); - _logger.LogInformation($"Searching fo app id {context.ClientId}"); + _logger.LogInformation($"Searching fo app id {context.Request.ClientId}"); // Retrieve the application details corresponding to the requested client_id. var application = await (from entity in database.Applications - where entity.ApplicationID == context.ClientId + where entity.ApplicationID == context.Request.ClientId select entity).SingleOrDefaultAsync(context.HttpContext.RequestAborted); if (application == null) { @@ -66,7 +66,7 @@ namespace Yavsc.Providers { return; } - + _logger.LogInformation("do Validate Authorization!"); context.Validated(); } @@ -120,19 +120,14 @@ namespace Yavsc.Providers { return; } - + _logger.LogInformation("do Validate Token request!"); context.Validated(); } - /// - /// List provided offline access tokens, to a given - /// user by its id - /// - /// - /// - public List GetOfflineTokens(string userid) { - - throw new NotImplementedException(); + public override Task TokenEndpoint (TokenEndpointContext context) + { + _logger.LogWarning($"OIDC success : IsAccessToken: {context.AuthenticationTicket.IsAccessToken()}"); + return Task.FromResult(0); } } } \ No newline at end of file diff --git a/Yavsc/src/Startup.cs b/Yavsc/src/Startup.cs index 53885f5d..99ecdc9a 100755 --- a/Yavsc/src/Startup.cs +++ b/Yavsc/src/Startup.cs @@ -156,10 +156,12 @@ namespace Yavsc RSAKeyUtils.GetKeyParameters(keyParamsFileInfo.Name) : RSAKeyUtils.GenerateKeyAndSave(keyParamsFileInfo.Name); key = new RsaSecurityKey(keyParams); + services.Configure(options => { options.SignInScheme = "ServerCookie"; - }); + }); + /* services.Configure( to => { @@ -169,7 +171,7 @@ namespace Yavsc new SigningCredentials(key, SecurityAlgorithms.RsaSha256Signature); } - ); + );*/ services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); services.Add(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager))); @@ -202,10 +204,6 @@ namespace Yavsc { option.User.AllowedUserNameCharacters += " "; option.User.RequireUniqueEmail = true; - option.Cookies.ApplicationCookie.LoginPath = "/authenticate"; - option.Cookies.ApplicationCookie.LogoutPath = "/signout"; - option.Cookies.ApplicationCookie.AccessDeniedPath = "/forbidden"; // TODO /forbidden - // FIXME option.Cookies.ApplicationCookie.ReturnUrlParameter = "target"; } ).AddEntityFrameworkStores() .AddTokenProvider>(Constants.EMailFactor) @@ -249,7 +247,7 @@ namespace Yavsc }); // options.AddPolicy("EmployeeId", policy => policy.RequireClaim("EmployeeId", "123", "456")); // options.AddPolicy("BuildingEntry", policy => policy.Requirements.Add(new OfficeEntryRequirement())); - options.AddPolicy("Authenticated", policy => policy.RequireAuthenticatedUser()); + // options.AddPolicy("Authenticated", policy => policy.RequireAuthenticatedUser()); }); services.AddSingleton(); @@ -404,8 +402,7 @@ namespace Yavsc EnableDirectoryBrowsing = false }); app.UseStaticFiles().UseWebSockets(); - app.UseIdentity(); - + app.UseOpenIdConnectServer(options => { options.Provider = new AuthorizationProvider(loggerFactory); @@ -426,7 +423,7 @@ namespace Yavsc options.TokenEndpointPath = new PathString("/connect/authorize/accept"); options.UseSlidingExpiration = true; options.AllowInsecureHttp = true; - options.AuthenticationScheme = "oidc"; // was = OpenIdConnectDefaults.AuthenticationScheme; + options.AuthenticationScheme = "ServerCookie"; // was = OpenIdConnectDefaults.AuthenticationScheme || "oidc"; options.LogoutEndpointPath = new PathString("/connect/logout"); /* options.ValidationEndpointPath = new PathString("/connect/introspect"); */ @@ -434,6 +431,8 @@ namespace Yavsc app.UseWhen(context => context.Request.Path.StartsWithSegments(new PathString("/api")), branch => { + branch.UseIdentity(); + branch.UseJwtBearerAuthentication(options => { options.AutomaticAuthenticate = true; @@ -441,13 +440,15 @@ namespace Yavsc options.RequireHttpsMetadata = false; options.Audience = siteSettings.Value.Audience; options.Authority = siteSettings.Value.Authority; + }); }); + // Create a new branch where the registered middleware will be executed only for API calls. app.UseWhen(context => !context.Request.Path.StartsWithSegments(new PathString("/api")), branch => { - // Create a new branch where the registered middleware will be executed only for non API calls. + branch.UseIdentity(); branch.UseCookieAuthentication(options => { options.AutomaticAuthenticate = true; @@ -455,8 +456,9 @@ namespace Yavsc options.AuthenticationScheme = "ServerCookie"; options.CookieName = CookieAuthenticationDefaults.CookiePrefix + "ServerCookie"; options.ExpireTimeSpan = TimeSpan.FromMinutes(5); - options.LoginPath = new PathString("/authenticate"); + options.LoginPath = new PathString("/signin"); options.LogoutPath = new PathString("/signout"); + options.ReturnUrlParameter = "target"; }); branch.UseMiddleware(googleOptions); @@ -472,8 +474,6 @@ namespace Yavsc }); - - app.UseRequestLocalization(localizationOptions.Value, (RequestCulture)new RequestCulture((string)"fr")); /* Generic OAuth (here GitHub): options.Notifications = new OAuthAuthenticationNotifications @@ -521,9 +521,6 @@ namespace Yavsc }; */ - - - app.UseMvc(routes => { routes.MapRoute( diff --git a/Yavsc/src/AuthorisationHandlers.cs b/Yavsc/src/ViewModels/Auth/AuthorisationHandlers.cs similarity index 100% rename from Yavsc/src/AuthorisationHandlers.cs rename to Yavsc/src/ViewModels/Auth/AuthorisationHandlers.cs diff --git a/Yavsc/src/ViewModels/Auth/AuthorisationView.cs b/Yavsc/src/ViewModels/Auth/AuthorisationView.cs new file mode 100644 index 00000000..5c6e9482 --- /dev/null +++ b/Yavsc/src/ViewModels/Auth/AuthorisationView.cs @@ -0,0 +1,12 @@ + + +using Microsoft.IdentityModel.Protocols.OpenIdConnect; + +namespace Yavsc +{ + public class AuthorisationView {  + public OpenIdConnectMessage Message { get; set; } + public Application Application { get; set; } + + } +} \ No newline at end of file diff --git a/Yavsc/src/ClaimTypes.cs b/Yavsc/src/ViewModels/Auth/ClaimTypes.cs similarity index 100% rename from Yavsc/src/ClaimTypes.cs rename to Yavsc/src/ViewModels/Auth/ClaimTypes.cs diff --git a/testOauthClient/.bowerrc b/testOauthClient/.bowerrc new file mode 100755 index 00000000..78d4e9d8 --- /dev/null +++ b/testOauthClient/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "wwwroot/lib" +} diff --git a/testOauthClient/Controllers/AuthenticationController.cs b/testOauthClient/Controllers/AuthenticationController.cs new file mode 100644 index 00000000..7ce203ab --- /dev/null +++ b/testOauthClient/Controllers/AuthenticationController.cs @@ -0,0 +1,19 @@ + +using Microsoft.AspNet.Authentication.OpenIdConnect; +using Microsoft.AspNet.Http.Authentication; +using Microsoft.AspNet.Mvc; + +namespace Mvc.Client.Controllers { + + public class AuthenticationController : Controller { + + [HttpGet("~/signin")] + public ActionResult SignIn(string returnUrl) { + // Instruct the OIDC client middleware to redirect the user agent to the identity provider. + // Note: the authenticationType parameter must match the value configured in Startup.cs + var properties = new AuthenticationProperties { RedirectUri = "http://localhost:5002/" }; + return new ChallengeResult(OpenIdConnectDefaults.AuthenticationScheme, properties); + } + + } +} \ No newline at end of file diff --git a/testOauthClient/Controllers/HomeController.cs b/testOauthClient/Controllers/HomeController.cs new file mode 100755 index 00000000..843f4fa0 --- /dev/null +++ b/testOauthClient/Controllers/HomeController.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNet.Mvc; + +namespace testOauthClient.Controllers +{ + public class HomeController : Controller + { + public IActionResult Index() + { + return View(); + } + + public IActionResult About() + { + ViewData["Message"] = "Your application description page."; + + return View(); + } + + public IActionResult Contact() + { + ViewData["Message"] = "Your contact page."; + + return View(); + } + + public IActionResult Error() + { + return View(); + } + } +} diff --git a/testOauthClient/Dockerfile b/testOauthClient/Dockerfile new file mode 100644 index 00000000..63d7c456 --- /dev/null +++ b/testOauthClient/Dockerfile @@ -0,0 +1,11 @@ +FROM microsoft/aspnet:1.0.0-rc1-update1 + +RUN printf "deb http://ftp.us.debian.org/debian jessie main\n" >> /etc/apt/sources.list +RUN apt-get -qq update && apt-get install -qqy sqlite3 libsqlite3-dev && rm -rf /var/lib/apt/lists/* + +COPY . /app +WORKDIR /app +RUN ["dnu", "restore"] + +EXPOSE 5000/tcp +ENTRYPOINT ["dnx", "-p", "project.json", "web"] diff --git a/testOauthClient/README.md b/testOauthClient/README.md new file mode 100644 index 00000000..4e494c9a --- /dev/null +++ b/testOauthClient/README.md @@ -0,0 +1,40 @@ +# Welcome to ASP.NET 5 + +We've made some big updates in this release, so it’s **important** that you spend a few minutes to learn what’s new. + +You've created a new ASP.NET 5 project. [Learn what's new](http://go.microsoft.com/fwlink/?LinkId=518016) + +## This application consists of: + +* Sample pages using ASP.NET MVC 6 +* [Gulp](http://go.microsoft.com/fwlink/?LinkId=518007) and [Bower](http://go.microsoft.com/fwlink/?LinkId=518004) for managing client-side libraries +* Theming using [Bootstrap](http://go.microsoft.com/fwlink/?LinkID=398939) + +## How to + +* [Add a Controller and View](http://go.microsoft.com/fwlink/?LinkID=398600) +* [Add an appsetting in config and access it in app.](http://go.microsoft.com/fwlink/?LinkID=699562) +* [Manage User Secrets using Secret Manager.](http://go.microsoft.com/fwlink/?LinkId=699315) +* [Use logging to log a message.](http://go.microsoft.com/fwlink/?LinkId=699316) +* [Add packages using NuGet.](http://go.microsoft.com/fwlink/?LinkId=699317) +* [Add client packages using Bower.](http://go.microsoft.com/fwlink/?LinkId=699318) +* [Target development, staging or production environment.](http://go.microsoft.com/fwlink/?LinkId=699319) + +## Overview + +* [Conceptual overview of what is ASP.NET 5](http://go.microsoft.com/fwlink/?LinkId=518008) +* [Fundamentals of ASP.NET 5 such as Startup and middleware.](http://go.microsoft.com/fwlink/?LinkId=699320) +* [Working with Data](http://go.microsoft.com/fwlink/?LinkId=398602) +* [Security](http://go.microsoft.com/fwlink/?LinkId=398603) +* [Client side development](http://go.microsoft.com/fwlink/?LinkID=699321) +* [Develop on different platforms](http://go.microsoft.com/fwlink/?LinkID=699322) +* [Read more on the documentation site](http://go.microsoft.com/fwlink/?LinkID=699323) + +## Run & Deploy + +* [Run your app](http://go.microsoft.com/fwlink/?LinkID=517851) +* [Run your app on .NET Core](http://go.microsoft.com/fwlink/?LinkID=517852) +* [Run commands in your project.json](http://go.microsoft.com/fwlink/?LinkID=517853) +* [Publish to Microsoft Azure Web Apps](http://go.microsoft.com/fwlink/?LinkID=398609) + +We would love to hear your [feedback](http://go.microsoft.com/fwlink/?LinkId=518015) diff --git a/testOauthClient/Startup.cs b/testOauthClient/Startup.cs new file mode 100755 index 00000000..cfd816d0 --- /dev/null +++ b/testOauthClient/Startup.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNet.Builder; +using Microsoft.AspNet.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Microsoft.AspNet.Authentication.OpenIdConnect; +using Microsoft.AspNet.Authentication; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; +using Microsoft.AspNet.Http; +using Microsoft.AspNet.Authentication.Cookies; + +namespace testOauthClient +{ + public class Startup + { + public Startup(IHostingEnvironment env) + { + // Set up configuration sources. + var builder = new ConfigurationBuilder() + .AddJsonFile("appsettings.json") + .AddEnvironmentVariables(); + Configuration = builder.Build(); + } + + public IConfigurationRoot Configuration { get; set; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + /* services.Configure(options => + { + options.SignInScheme = "ClientCookie"; + }); */ + services.AddAuthentication(options => { + options.SignInScheme = "ClientCookie"; + }); + // Add framework services. + services.AddMvc(); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) + { + loggerFactory.AddConsole(Configuration.GetSection("Logging")); + loggerFactory.AddDebug(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseExceptionHandler("/Home/Error"); + } + + app.UseCookieAuthentication(new CookieAuthenticationOptions { + AutomaticAuthenticate = true, + AutomaticChallenge = true, + AuthenticationScheme = "ClientCookie", + CookieName = CookieAuthenticationDefaults.CookiePrefix + "ClientCookie", + ExpireTimeSpan = TimeSpan.FromMinutes(5), + LoginPath = new PathString("/signin"), + LogoutPath = new PathString("/signout") + }); + + app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions { + RequireHttpsMetadata = false, + + // Note: these settings must match the application details + // inserted in the database at the server level. + ClientId = "016c5ae4-f4cd-40e3-b250-13701c871ecd", + ClientSecret = "blahblah", + PostLogoutRedirectUri = "http://dev.pschneider.fr/", + + // Use the authorization code flow. + ResponseType = OpenIdConnectResponseTypes.Code, + + // Note: setting the Authority allows the OIDC client middleware to automatically + // retrieve the identity provider's configuration and spare you from setting + // the different endpoints URIs or the token validation parameters explicitly. + Authority = "http://dev.pschneider.fr/" + }); + + app.UseStaticFiles(); + + app.UseMvc(routes => + { + routes.MapRoute( + name: "default", + template: "{controller=Home}/{action=Index}/{id?}"); + }); + } + + // Entry point for the application. + public static void Main(string[] args) => Microsoft.AspNet.Hosting.WebApplication.Run(args); + } +} diff --git a/testOauthClient/Views/Home/About.cshtml b/testOauthClient/Views/Home/About.cshtml new file mode 100755 index 00000000..74e97d9c --- /dev/null +++ b/testOauthClient/Views/Home/About.cshtml @@ -0,0 +1,7 @@ +@{ + ViewData["Title"] = "About"; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +

Use this area to provide additional information.

diff --git a/testOauthClient/Views/Home/Contact.cshtml b/testOauthClient/Views/Home/Contact.cshtml new file mode 100755 index 00000000..cddb37e1 --- /dev/null +++ b/testOauthClient/Views/Home/Contact.cshtml @@ -0,0 +1,17 @@ +@{ + ViewData["Title"] = "Contact"; +} +

@ViewData["Title"].

+

@ViewData["Message"]

+ +
+ One Microsoft Way
+ Redmond, WA 98052-6399
+ P: + 425.555.0100 +
+ +
+ Support: Support@example.com
+ Marketing: Marketing@example.com +
diff --git a/testOauthClient/Views/Home/Index.cshtml b/testOauthClient/Views/Home/Index.cshtml new file mode 100755 index 00000000..dce6fcff --- /dev/null +++ b/testOauthClient/Views/Home/Index.cshtml @@ -0,0 +1,30 @@ +@{ + ViewData["Title"] = "Home Page"; +} + +
+ @if (User?.Identity?.IsAuthenticated ?? false) { +

Welcome, @User.Identity.Name

+ +

+ @foreach (var claim in Context.User.Claims) { +

@claim.Type: @claim.Value
+ } +

+ + if (!string.IsNullOrEmpty(Model)) { +

Message received from the resource controller: @Model

+ } + + + + + + Sign out + } + + else { +

Welcome, anonymous

+ Sign in + } +
diff --git a/testOauthClient/Views/Shared/Error.cshtml b/testOauthClient/Views/Shared/Error.cshtml new file mode 100755 index 00000000..a288cb05 --- /dev/null +++ b/testOauthClient/Views/Shared/Error.cshtml @@ -0,0 +1,6 @@ +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

diff --git a/testOauthClient/Views/Shared/_Layout.cshtml b/testOauthClient/Views/Shared/_Layout.cshtml new file mode 100755 index 00000000..ab438cc3 --- /dev/null +++ b/testOauthClient/Views/Shared/_Layout.cshtml @@ -0,0 +1,67 @@ + + + + + + @ViewData["Title"] - testOauthClient + + + + + + + + + + + + +
+ @RenderBody() +
+
+

© 2016 - testOauthClient

+
+
+ + + + + + + + + + + + + @RenderSection("scripts", required: false) + + diff --git a/testOauthClient/Views/_ViewImports.cshtml b/testOauthClient/Views/_ViewImports.cshtml new file mode 100755 index 00000000..bb69f530 --- /dev/null +++ b/testOauthClient/Views/_ViewImports.cshtml @@ -0,0 +1,2 @@ +@using testOauthClient +@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" diff --git a/testOauthClient/Views/_ViewStart.cshtml b/testOauthClient/Views/_ViewStart.cshtml new file mode 100755 index 00000000..66b5da25 --- /dev/null +++ b/testOauthClient/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} diff --git a/testOauthClient/appsettings.json b/testOauthClient/appsettings.json new file mode 100755 index 00000000..e5472e56 --- /dev/null +++ b/testOauthClient/appsettings.json @@ -0,0 +1,10 @@ +{ + "Logging": { + "IncludeScopes": false, + "LogLevel": { + "Default": "Verbose", + "System": "Information", + "Microsoft": "Information" + } + } +} diff --git a/testOauthClient/bower.json b/testOauthClient/bower.json new file mode 100755 index 00000000..30c22e9a --- /dev/null +++ b/testOauthClient/bower.json @@ -0,0 +1,10 @@ +{ + "name": "testOauthClient", + "private": true, + "dependencies": { + "bootstrap": "3.3.5", + "jquery": "2.1.4", + "jquery-validation": "1.14.0", + "jquery-validation-unobtrusive": "3.2.4" + } +} diff --git a/testOauthClient/gulpfile.js b/testOauthClient/gulpfile.js new file mode 100755 index 00000000..4490bb1a --- /dev/null +++ b/testOauthClient/gulpfile.js @@ -0,0 +1,50 @@ +/// +"use strict"; + +var gulp = require("gulp"), + rimraf = require("rimraf"), + concat = require("gulp-concat"), + cssmin = require("gulp-cssmin"), + shell = require("gulp-shell"), + uglify = require("gulp-uglify"); + +var webroot = "./wwwroot/"; + +var paths = { + js: webroot + "js/**/*.js", + minJs: webroot + "js/**/*.min.js", + css: webroot + "css/**/*.css", + minCss: webroot + "css/**/*.min.css", + concatJsDest: webroot + "js/site.min.js", + concatCssDest: webroot + "css/site.min.css" +}; + +gulp.task("clean:js", function (cb) { + rimraf(paths.concatJsDest, cb); +}); + +gulp.task("clean:css", function (cb) { + rimraf(paths.concatCssDest, cb); +}); + +gulp.task("clean", ["clean:js", "clean:css"]); + +gulp.task("min:js", function () { + return gulp.src([paths.js, "!" + paths.minJs], { + base: "." + }) + .pipe(concat(paths.concatJsDest)) + .pipe(uglify()) + .pipe(gulp.dest(".")); +}); + +gulp.task("min:css", function () { + return gulp.src([paths.css, "!" + paths.minCss]) + .pipe(concat(paths.concatCssDest)) + .pipe(cssmin()) + .pipe(gulp.dest(".")); +}); + +gulp.task("min", ["min:js", "min:css"]); +gulp.task('watch', shell.task(['MONO_OPTIONS=--debug ASPNET_ENV=Development dnx-watch web --configuration=Debug --server.urls=http://*:5002'])) + diff --git a/testOauthClient/package.json b/testOauthClient/package.json new file mode 100755 index 00000000..2e88ea7e --- /dev/null +++ b/testOauthClient/package.json @@ -0,0 +1,11 @@ +{ + "name": "testOauthClient", + "version": "0.0.0", + "devDependencies": { + "gulp": "^3.9.0", + "gulp-concat": "2.5.2", + "gulp-cssmin": "0.1.7", + "gulp-uglify": "1.2.0", + "rimraf": "2.2.8" + } +} diff --git a/testOauthClient/project.json b/testOauthClient/project.json new file mode 100755 index 00000000..2a0aef3e --- /dev/null +++ b/testOauthClient/project.json @@ -0,0 +1,51 @@ +{ + "version": "1.0.0-*", + "compilationOptions": { + "emitEntryPoint": true + }, + "tooling": { + "defaultNamespace": "testOauthClient" + }, + "dependencies": { + "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final", + "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final", + "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", + "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final", + "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", + "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final", + "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final", + "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final", + "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final", + "Microsoft.AspNet.Authentication.OpenIdConnect": "1.0.0-rc1-final", + "Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final" + }, + "commands": { + "web": "Microsoft.AspNet.Server.Kestrel" + }, + "frameworks": { + "dnx451": {} + }, + "exclude": [ + "wwwroot", + "node_modules", + "bower_components" + ], + "publishExclude": [ + "node_modules", + "bower_components", + "**.xproj", + "**.user", + "**.vspscc" + ], + "scripts": { + "prepublish": [ + "npm install", + "bower install", + "gulp clean", + "gulp min" + ] + } +} \ No newline at end of file diff --git a/testOauthClient/wwwroot/css/site.css b/testOauthClient/wwwroot/css/site.css new file mode 100755 index 00000000..b67b92cf --- /dev/null +++ b/testOauthClient/wwwroot/css/site.css @@ -0,0 +1,24 @@ +body { + padding-top: 50px; + padding-bottom: 20px; +} + +/* Wrapping element */ +/* Set some basic padding to keep content from hitting the edges */ +.body-content { + padding-left: 15px; + padding-right: 15px; +} + +/* Set widths on the form inputs since otherwise they're 100% wide */ +input, +select, +textarea { + max-width: 280px; +} + +/* Carousel */ +.carousel-caption p { + font-size: 20px; + line-height: 1.4; +} diff --git a/testOauthClient/wwwroot/css/site.min.css b/testOauthClient/wwwroot/css/site.min.css new file mode 100644 index 00000000..1547cbc4 --- /dev/null +++ b/testOauthClient/wwwroot/css/site.min.css @@ -0,0 +1 @@ +body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption p{font-size:20px;line-height:1.4} diff --git a/testOauthClient/wwwroot/favicon.ico b/testOauthClient/wwwroot/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..a3a799985c43bc7309d701b2cad129023377dc71 GIT binary patch literal 32038 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 R1gwujQ%z5`RQctb{{l=|@gx8M literal 0 HcmV?d00001 diff --git a/testOauthClient/wwwroot/images/Banner-02-VS.png b/testOauthClient/wwwroot/images/Banner-02-VS.png new file mode 100755 index 0000000000000000000000000000000000000000..c9f461137e80b7bed7a75d5f2d15d0defcfb2bfa GIT binary patch literal 12388 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 literal 0 HcmV?d00001 diff --git a/testOauthClient/wwwroot/js/site.js b/testOauthClient/wwwroot/js/site.js new file mode 100755 index 00000000..1dacbec4 --- /dev/null +++ b/testOauthClient/wwwroot/js/site.js @@ -0,0 +1 @@ +// Write your Javascript code. diff --git a/testOauthClient/wwwroot/js/site.min.js b/testOauthClient/wwwroot/js/site.min.js new file mode 100644 index 00000000..e69de29b diff --git a/testOauthClient/wwwroot/web.config b/testOauthClient/wwwroot/web.config new file mode 100644 index 00000000..db6e6f45 --- /dev/null +++ b/testOauthClient/wwwroot/web.config @@ -0,0 +1,9 @@ + + + + + + + + +