From de70d29d3db7ad162b42944504be8577c82b5859 Mon Sep 17 00:00:00 2001 From: Sundas Choudry Date: Mon, 21 Feb 2022 09:06:40 +0000 Subject: [PATCH 1/2] Use razor pages for Duende --- .../DuendeDynamicProviders/Config.cs | 85 +- .../DuendeDynamicProviders.csproj | 14 +- .../HostingExtensions.cs | 99 + .../Pages/Account/AccessDenied.cshtml | 10 + .../Pages/Account/AccessDenied.cshtml.cs | 12 + .../Pages/Account/Login/Index.cshtml} | 40 +- .../Pages/Account/Login/Index.cshtml.cs | 229 + .../Pages/Account/Login/InputModel.cs | 22 + .../Pages/Account/Login/LoginOptions.cs | 9 + .../Pages/Account/Login/ViewModel.cs | 23 + .../Account/Logout/Index.cshtml} | 8 +- .../Pages/Account/Logout/Index.cshtml.cs | 96 + .../Pages/Account/Logout/LoggedOut.cshtml | 30 + .../Pages/Account/Logout/LoggedOut.cshtml.cs | 33 + .../Account/Logout/LoggedOutViewModel.cs | 14 + .../Pages/Account/Logout/LogoutOptions.cs | 8 + .../Pages/Ciba/All.cshtml | 48 + .../Pages/Ciba/All.cshtml.cs | 35 + .../Ciba/Consent.cshtml} | 58 +- .../Pages/Ciba/Consent.cshtml.cs | 218 + .../Pages/Ciba/ConsentOptions.cs | 15 + .../Pages/Ciba/Index.cshtml | 30 + .../Pages/Ciba/Index.cshtml.cs | 38 + .../Pages/Ciba/InputModel.cs | 13 + .../Pages/Ciba/ViewModel.cs | 34 + .../Pages/Ciba/_ScopeListItem.cshtml | 47 + .../Pages/Consent/ConsentOptions.cs | 15 + .../Pages}/Consent/Index.cshtml | 43 +- .../Pages/Consent/Index.cshtml.cs | 224 + .../Pages/Consent/InputModel.cs | 14 + .../Pages/Consent/ViewModel.cs | 33 + .../Pages/Consent/_ScopeListItem.cshtml | 47 + .../Pages/Device/DeviceOptions.cs | 16 + .../Pages/Device/Index.cshtml | 141 + .../Pages/Device/Index.cshtml.cs | 211 + .../Pages/Device/InputModel.cs | 11 + .../{Views => Pages}/Device/Success.cshtml | 5 + .../Pages/Device/Success.cshtml.cs | 13 + .../Pages/Device/ViewModel.cs | 22 + .../Pages/Device}/_ScopeListItem.cshtml | 5 +- .../{Views => Pages}/Diagnostics/Index.cshtml | 31 +- .../Pages/Diagnostics/Index.cshtml.cs | 26 + .../Pages/Diagnostics/ViewModel.cs | 30 + .../Pages/Extensions.cs | 43 + .../Pages/ExternalLogin/Callback.cshtml | 19 + .../Pages/ExternalLogin/Callback.cshtml.cs | 138 + .../Pages/ExternalLogin/Challenge.cshtml | 19 + .../Pages/ExternalLogin/Challenge.cshtml.cs | 45 + .../{Views => Pages}/Grants/Index.cshtml | 11 +- .../Pages/Grants/Index.cshtml.cs | 80 + .../Pages/Grants/ViewModel.cs | 19 + .../Pages/Home/Error/Index.cshtml} | 21 +- .../Pages/Home/Error/Index.cshtml.cs | 39 + .../Pages/Home/Error/ViewModel.cs | 20 + .../Pages}/Index.cshtml | 12 +- .../Pages/Index.cshtml.cs | 16 + .../Pages/Redirect/Index.cshtml} | 7 +- .../Pages/Redirect/Index.cshtml.cs | 22 + .../Pages/SecurityHeadersAttribute.cs | 55 + .../{Views => Pages}/Shared/_Layout.cshtml | 1 + .../Pages}/Shared/_Nav.cshtml | 2 +- .../Pages}/Shared/_ValidationSummary.cshtml | 2 +- .../DuendeDynamicProviders/Pages/TestUsers.cs | 64 + .../{Views => Pages}/_ViewImports.cshtml | 2 +- .../{Views => Pages}/_ViewStart.cshtml | 2 +- .../DuendeDynamicProviders/Program.cs | 79 +- .../Properties/launchSettings.json | 2 +- .../Quickstart/Account/AccountController.cs | 380 -- .../Quickstart/Account/AccountOptions.cs | 20 - .../Quickstart/Account/ExternalController.cs | 200 - .../Quickstart/Account/ExternalProvider.cs | 12 - .../Quickstart/Account/LoggedOutViewModel.cs | 19 - .../Quickstart/Account/LoginInputModel.cs | 18 - .../Quickstart/Account/LoginViewModel.cs | 22 - .../Quickstart/Account/LogoutInputModel.cs | 11 - .../Quickstart/Account/LogoutViewModel.cs | 11 - .../Quickstart/Account/RedirectViewModel.cs | 12 - .../Quickstart/Consent/ConsentController.cs | 262 -- .../Quickstart/Consent/ConsentInputModel.cs | 17 - .../Quickstart/Consent/ConsentOptions.cs | 16 - .../Quickstart/Consent/ConsentViewModel.cs | 19 - .../Consent/ProcessConsentResult.cs | 21 - .../Quickstart/Consent/ScopeViewModel.cs | 16 - .../Device/DeviceAuthorizationInputModel.cs | 11 - .../Device/DeviceAuthorizationViewModel.cs | 12 - .../Quickstart/Device/DeviceController.cs | 232 - .../Diagnostics/DiagnosticsController.cs | 29 - .../Diagnostics/DiagnosticsViewModel.cs | 32 - .../Quickstart/Extensions.cs | 31 - .../Quickstart/Grants/GrantsController.cs | 97 - .../Quickstart/Grants/GrantsViewModel.cs | 27 - .../Quickstart/Home/ErrorViewModel.cs | 22 - .../Quickstart/Home/HomeController.cs | 65 - .../Quickstart/SecurityHeadersAttribute.cs | 56 - .../Quickstart/TestUsers.cs | 66 - .../DuendeDynamicProviders/Startup.cs | 99 - .../Views/Account/AccessDenied.cshtml | 7 - .../Views/Account/LoggedOut.cshtml | 34 - .../Views/Device/UserCodeCapture.cshtml | 23 - .../DuendeDynamicProviders/testclient.pfx | Bin 2653 -> 0 bytes .../wwwroot/css/site.css | 39 +- .../wwwroot/css/site.min.css | 2 +- .../wwwroot/css/site.scss | 61 +- .../wwwroot/js/signout-redirect.js | 2 +- .../wwwroot/lib/bootstrap/LICENSE | 22 + .../wwwroot/lib/bootstrap4-glyphicons/LICENSE | 201 + .../css/bootstrap-glyphicons.css | 809 ++++ .../css/bootstrap-glyphicons.min.css | 6 + .../glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../glyphicons-halflings-regular.svg | 288 ++ .../glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../maps/glyphicons-fontawesome.css | 2947 +++++++++++++ .../maps/glyphicons-fontawesome.less | 3891 +++++++++++++++++ .../maps/glyphicons-fontawesome.min.css | 1 + DuendeIdentityServer/DuendeIdP/Config.cs | 97 +- .../DuendeIdP/DuendeIdP.csproj | 6 +- .../DuendeIdP/HostingExtensions.cs | 72 + .../Pages/Account/AccessDenied.cshtml | 10 + .../Pages/Account/AccessDenied.cshtml.cs | 12 + .../Pages/Account/Login/Index.cshtml} | 40 +- .../Pages/Account/Login/Index.cshtml.cs | 229 + .../Pages/Account/Login/InputModel.cs | 22 + .../Pages/Account/Login/LoginOptions.cs | 9 + .../Pages/Account/Login/ViewModel.cs | 23 + .../Account/Logout/Index.cshtml} | 8 +- .../Pages/Account/Logout/Index.cshtml.cs | 96 + .../Pages/Account/Logout/LoggedOut.cshtml | 30 + .../Pages/Account/Logout/LoggedOut.cshtml.cs | 33 + .../Account/Logout/LoggedOutViewModel.cs | 14 + .../Pages/Account/Logout/LogoutOptions.cs | 8 + .../DuendeIdP/Pages/Ciba/All.cshtml | 48 + .../DuendeIdP/Pages/Ciba/All.cshtml.cs | 35 + .../Ciba/Consent.cshtml} | 58 +- .../DuendeIdP/Pages/Ciba/Consent.cshtml.cs | 218 + .../DuendeIdP/Pages/Ciba/ConsentOptions.cs | 15 + .../DuendeIdP/Pages/Ciba/Index.cshtml | 30 + .../DuendeIdP/Pages/Ciba/Index.cshtml.cs | 38 + .../DuendeIdP/Pages/Ciba/InputModel.cs | 13 + .../DuendeIdP/Pages/Ciba/ViewModel.cs | 34 + .../Pages/Ciba/_ScopeListItem.cshtml | 47 + .../DuendeIdP/Pages/Consent/ConsentOptions.cs | 15 + .../Pages}/Consent/Index.cshtml | 43 +- .../DuendeIdP/Pages/Consent/Index.cshtml.cs | 224 + .../DuendeIdP/Pages/Consent/InputModel.cs | 14 + .../DuendeIdP/Pages/Consent/ViewModel.cs | 33 + .../Pages/Consent/_ScopeListItem.cshtml | 47 + .../DuendeIdP/Pages/Device/DeviceOptions.cs | 16 + .../DuendeIdP/Pages/Device/Index.cshtml | 141 + .../DuendeIdP/Pages/Device/Index.cshtml.cs | 211 + .../DuendeIdP/Pages/Device/InputModel.cs | 11 + .../{Views => Pages}/Device/Success.cshtml | 5 + .../DuendeIdP/Pages/Device/Success.cshtml.cs | 13 + .../DuendeIdP/Pages/Device/ViewModel.cs | 22 + .../Pages/Device}/_ScopeListItem.cshtml | 5 +- .../{Views => Pages}/Diagnostics/Index.cshtml | 31 +- .../Pages/Diagnostics/Index.cshtml.cs | 26 + .../DuendeIdP/Pages/Diagnostics/ViewModel.cs | 30 + .../DuendeIdP/Pages/Extensions.cs | 43 + .../Pages/ExternalLogin/Callback.cshtml | 19 + .../Pages/ExternalLogin/Callback.cshtml.cs | 138 + .../Pages/ExternalLogin/Challenge.cshtml | 19 + .../Pages/ExternalLogin/Challenge.cshtml.cs | 45 + .../{Views => Pages}/Grants/Index.cshtml | 11 +- .../DuendeIdP/Pages/Grants/Index.cshtml.cs | 80 + .../DuendeIdP/Pages/Grants/ViewModel.cs | 19 + .../Pages/Home/Error/Index.cshtml} | 21 +- .../Pages/Home/Error/Index.cshtml.cs | 39 + .../DuendeIdP/Pages/Home/Error/ViewModel.cs | 20 + .../Home => DuendeIdP/Pages}/Index.cshtml | 12 +- .../DuendeIdP/Pages/Index.cshtml.cs | 16 + .../Pages/Redirect/Index.cshtml} | 7 +- .../DuendeIdP/Pages/Redirect/Index.cshtml.cs | 22 + .../Pages/SecurityHeadersAttribute.cs | 55 + .../{Views => Pages}/Shared/_Layout.cshtml | 1 + .../Pages}/Shared/_Nav.cshtml | 2 +- .../Pages}/Shared/_ValidationSummary.cshtml | 2 +- .../DuendeIdP/Pages/TestUsers.cs | 64 + .../{Views => Pages}/_ViewImports.cshtml | 2 +- .../{Views => Pages}/_ViewStart.cshtml | 2 +- DuendeIdentityServer/DuendeIdP/Program.cs | 79 +- .../DuendeIdP/Properties/launchSettings.json | 2 +- .../Quickstart/Account/AccountController.cs | 368 -- .../Quickstart/Account/AccountOptions.cs | 20 - .../Quickstart/Account/ExternalController.cs | 200 - .../Quickstart/Account/ExternalProvider.cs | 12 - .../Quickstart/Account/LoggedOutViewModel.cs | 19 - .../Quickstart/Account/LoginInputModel.cs | 18 - .../Quickstart/Account/LoginViewModel.cs | 22 - .../Quickstart/Account/LogoutInputModel.cs | 11 - .../Quickstart/Account/LogoutViewModel.cs | 11 - .../Quickstart/Account/RedirectViewModel.cs | 12 - .../Quickstart/Consent/ConsentController.cs | 262 -- .../Quickstart/Consent/ConsentInputModel.cs | 17 - .../Quickstart/Consent/ConsentOptions.cs | 16 - .../Quickstart/Consent/ConsentViewModel.cs | 19 - .../Consent/ProcessConsentResult.cs | 21 - .../Quickstart/Consent/ScopeViewModel.cs | 16 - .../Device/DeviceAuthorizationInputModel.cs | 11 - .../Device/DeviceAuthorizationViewModel.cs | 12 - .../Quickstart/Device/DeviceController.cs | 232 - .../Diagnostics/DiagnosticsController.cs | 29 - .../Diagnostics/DiagnosticsViewModel.cs | 32 - .../DuendeIdP/Quickstart/Extensions.cs | 31 - .../Quickstart/Grants/GrantsController.cs | 97 - .../Quickstart/Grants/GrantsViewModel.cs | 27 - .../Quickstart/Home/ErrorViewModel.cs | 22 - .../Quickstart/Home/HomeController.cs | 65 - .../Quickstart/SecurityHeadersAttribute.cs | 56 - .../DuendeIdP/Quickstart/TestUsers.cs | 66 - DuendeIdentityServer/DuendeIdP/Startup.cs | 85 - .../Views/Account/AccessDenied.cshtml | 7 - .../DuendeIdP/Views/Account/LoggedOut.cshtml | 34 - .../Views/Device/UserCodeCapture.cshtml | 23 - ...-key-B10AAF48CB2F925ED8E431B8A3A1EF09.json | 1 - .../DuendeIdP/wwwroot/css/site.css | 39 +- .../DuendeIdP/wwwroot/css/site.min.css | 2 +- .../DuendeIdP/wwwroot/css/site.scss | 61 +- .../DuendeIdP/wwwroot/js/signout-redirect.js | 2 +- .../DuendeIdP/wwwroot/lib/bootstrap/LICENSE | 22 + .../wwwroot/lib/bootstrap4-glyphicons/LICENSE | 201 + .../css/bootstrap-glyphicons.css | 809 ++++ .../css/bootstrap-glyphicons.min.css | 6 + .../glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../glyphicons-halflings-regular.svg | 288 ++ .../glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../maps/glyphicons-fontawesome.css | 2947 +++++++++++++ .../maps/glyphicons-fontawesome.less | 3891 +++++++++++++++++ .../maps/glyphicons-fontawesome.min.css | 1 + Saml.sln | 30 +- 233 files changed, 21724 insertions(+), 4344 deletions(-) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/HostingExtensions.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/AccessDenied.cshtml create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/AccessDenied.cshtml.cs rename DuendeIdentityServer/{DuendeIdP/Views/Account/Login.cshtml => DuendeDynamicProviders/Pages/Account/Login/Index.cshtml} (69%) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Login/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Login/InputModel.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Login/LoginOptions.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Login/ViewModel.cs rename DuendeIdentityServer/DuendeDynamicProviders/{Views/Account/Logout.cshtml => Pages/Account/Logout/Index.cshtml} (74%) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Logout/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Logout/LoggedOut.cshtml create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Logout/LoggedOut.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Logout/LoggedOutViewModel.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Logout/LogoutOptions.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Ciba/All.cshtml create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Ciba/All.cshtml.cs rename DuendeIdentityServer/DuendeDynamicProviders/{Views/Device/UserCodeConfirmation.cshtml => Pages/Ciba/Consent.cshtml} (59%) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Ciba/Consent.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Ciba/ConsentOptions.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Ciba/Index.cshtml create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Ciba/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Ciba/InputModel.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Ciba/ViewModel.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Ciba/_ScopeListItem.cshtml create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Consent/ConsentOptions.cs rename DuendeIdentityServer/{DuendeIdP/Views => DuendeDynamicProviders/Pages}/Consent/Index.cshtml (71%) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Consent/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Consent/InputModel.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Consent/ViewModel.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Consent/_ScopeListItem.cshtml create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Device/DeviceOptions.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Device/Index.cshtml create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Device/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Device/InputModel.cs rename DuendeIdentityServer/DuendeDynamicProviders/{Views => Pages}/Device/Success.cshtml (70%) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Device/Success.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Device/ViewModel.cs rename DuendeIdentityServer/{DuendeIdP/Views/Shared => DuendeDynamicProviders/Pages/Device}/_ScopeListItem.cshtml (86%) rename DuendeIdentityServer/DuendeDynamicProviders/{Views => Pages}/Diagnostics/Index.cshtml (63%) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Diagnostics/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Diagnostics/ViewModel.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Extensions.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/ExternalLogin/Callback.cshtml create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/ExternalLogin/Callback.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/ExternalLogin/Challenge.cshtml create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/ExternalLogin/Challenge.cshtml.cs rename DuendeIdentityServer/DuendeDynamicProviders/{Views => Pages}/Grants/Index.cshtml (93%) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Grants/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Grants/ViewModel.cs rename DuendeIdentityServer/{DuendeIdP/Views/Shared/Error.cshtml => DuendeDynamicProviders/Pages/Home/Error/Index.cshtml} (53%) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Home/Error/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Home/Error/ViewModel.cs rename DuendeIdentityServer/{DuendeIdP/Views/Home => DuendeDynamicProviders/Pages}/Index.cshtml (75%) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Index.cshtml.cs rename DuendeIdentityServer/{DuendeIdP/Views/Shared/Redirect.cshtml => DuendeDynamicProviders/Pages/Redirect/Index.cshtml} (59%) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/Redirect/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/SecurityHeadersAttribute.cs rename DuendeIdentityServer/DuendeDynamicProviders/{Views => Pages}/Shared/_Layout.cshtml (89%) rename DuendeIdentityServer/{DuendeIdP/Views => DuendeDynamicProviders/Pages}/Shared/_Nav.cshtml (88%) rename DuendeIdentityServer/{DuendeIdP/Views => DuendeDynamicProviders/Pages}/Shared/_ValidationSummary.cshtml (74%) create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Pages/TestUsers.cs rename DuendeIdentityServer/DuendeDynamicProviders/{Views => Pages}/_ViewImports.cshtml (56%) rename DuendeIdentityServer/DuendeDynamicProviders/{Views => Pages}/_ViewStart.cshtml (81%) delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Account/AccountController.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Account/AccountOptions.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Account/ExternalController.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Account/ExternalProvider.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Account/LoggedOutViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Account/LoginInputModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Account/LoginViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Account/LogoutInputModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Account/LogoutViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Account/RedirectViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Consent/ConsentController.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Consent/ConsentInputModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Consent/ConsentOptions.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Consent/ConsentViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Consent/ProcessConsentResult.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Consent/ScopeViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Device/DeviceAuthorizationInputModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Device/DeviceAuthorizationViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Device/DeviceController.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Diagnostics/DiagnosticsController.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Diagnostics/DiagnosticsViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Extensions.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Grants/GrantsController.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Grants/GrantsViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Home/ErrorViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/Home/HomeController.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/SecurityHeadersAttribute.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Quickstart/TestUsers.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Startup.cs delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Views/Account/AccessDenied.cshtml delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Views/Account/LoggedOut.cshtml delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/Views/Device/UserCodeCapture.cshtml delete mode 100644 DuendeIdentityServer/DuendeDynamicProviders/testclient.pfx create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap/LICENSE create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap4-glyphicons/LICENSE create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.css create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.min.css create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.eot create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.svg create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.ttf create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff2 create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.css create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.less create mode 100644 DuendeIdentityServer/DuendeDynamicProviders/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.min.css create mode 100644 DuendeIdentityServer/DuendeIdP/HostingExtensions.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Account/AccessDenied.cshtml create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Account/AccessDenied.cshtml.cs rename DuendeIdentityServer/{DuendeDynamicProviders/Views/Account/Login.cshtml => DuendeIdP/Pages/Account/Login/Index.cshtml} (69%) create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Account/Login/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Account/Login/InputModel.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Account/Login/LoginOptions.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Account/Login/ViewModel.cs rename DuendeIdentityServer/DuendeIdP/{Views/Account/Logout.cshtml => Pages/Account/Logout/Index.cshtml} (76%) create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Account/Logout/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Account/Logout/LoggedOut.cshtml create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Account/Logout/LoggedOut.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Account/Logout/LoggedOutViewModel.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Account/Logout/LogoutOptions.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Ciba/All.cshtml create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Ciba/All.cshtml.cs rename DuendeIdentityServer/DuendeIdP/{Views/Device/UserCodeConfirmation.cshtml => Pages/Ciba/Consent.cshtml} (59%) create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Ciba/Consent.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Ciba/ConsentOptions.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Ciba/Index.cshtml create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Ciba/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Ciba/InputModel.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Ciba/ViewModel.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Ciba/_ScopeListItem.cshtml create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Consent/ConsentOptions.cs rename DuendeIdentityServer/{DuendeDynamicProviders/Views => DuendeIdP/Pages}/Consent/Index.cshtml (71%) create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Consent/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Consent/InputModel.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Consent/ViewModel.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Consent/_ScopeListItem.cshtml create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Device/DeviceOptions.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Device/Index.cshtml create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Device/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Device/InputModel.cs rename DuendeIdentityServer/DuendeIdP/{Views => Pages}/Device/Success.cshtml (74%) create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Device/Success.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Device/ViewModel.cs rename DuendeIdentityServer/{DuendeDynamicProviders/Views/Shared => DuendeIdP/Pages/Device}/_ScopeListItem.cshtml (87%) rename DuendeIdentityServer/DuendeIdP/{Views => Pages}/Diagnostics/Index.cshtml (63%) create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Diagnostics/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Diagnostics/ViewModel.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Extensions.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/ExternalLogin/Callback.cshtml create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/ExternalLogin/Callback.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/ExternalLogin/Challenge.cshtml create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/ExternalLogin/Challenge.cshtml.cs rename DuendeIdentityServer/DuendeIdP/{Views => Pages}/Grants/Index.cshtml (94%) create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Grants/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Grants/ViewModel.cs rename DuendeIdentityServer/{DuendeDynamicProviders/Views/Shared/Error.cshtml => DuendeIdP/Pages/Home/Error/Index.cshtml} (53%) create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Home/Error/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Home/Error/ViewModel.cs rename DuendeIdentityServer/{DuendeDynamicProviders/Views/Home => DuendeIdP/Pages}/Index.cshtml (75%) create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Index.cshtml.cs rename DuendeIdentityServer/{DuendeDynamicProviders/Views/Shared/Redirect.cshtml => DuendeIdP/Pages/Redirect/Index.cshtml} (61%) create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/Redirect/Index.cshtml.cs create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/SecurityHeadersAttribute.cs rename DuendeIdentityServer/DuendeIdP/{Views => Pages}/Shared/_Layout.cshtml (89%) rename DuendeIdentityServer/{DuendeDynamicProviders/Views => DuendeIdP/Pages}/Shared/_Nav.cshtml (88%) rename DuendeIdentityServer/{DuendeDynamicProviders/Views => DuendeIdP/Pages}/Shared/_ValidationSummary.cshtml (74%) create mode 100644 DuendeIdentityServer/DuendeIdP/Pages/TestUsers.cs rename DuendeIdentityServer/DuendeIdP/{Views => Pages}/_ViewImports.cshtml (56%) rename DuendeIdentityServer/DuendeIdP/{Views => Pages}/_ViewStart.cshtml (81%) delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Account/AccountController.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Account/AccountOptions.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Account/ExternalController.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Account/ExternalProvider.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Account/LoggedOutViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Account/LoginInputModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Account/LoginViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Account/LogoutInputModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Account/LogoutViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Account/RedirectViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Consent/ConsentController.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Consent/ConsentInputModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Consent/ConsentOptions.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Consent/ConsentViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Consent/ProcessConsentResult.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Consent/ScopeViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Device/DeviceAuthorizationInputModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Device/DeviceAuthorizationViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Device/DeviceController.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Diagnostics/DiagnosticsController.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Diagnostics/DiagnosticsViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Extensions.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Grants/GrantsController.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Grants/GrantsViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Home/ErrorViewModel.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/Home/HomeController.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/SecurityHeadersAttribute.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Quickstart/TestUsers.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Startup.cs delete mode 100644 DuendeIdentityServer/DuendeIdP/Views/Account/AccessDenied.cshtml delete mode 100644 DuendeIdentityServer/DuendeIdP/Views/Account/LoggedOut.cshtml delete mode 100644 DuendeIdentityServer/DuendeIdP/Views/Device/UserCodeCapture.cshtml delete mode 100644 DuendeIdentityServer/DuendeIdP/keys/is-signing-key-B10AAF48CB2F925ED8E431B8A3A1EF09.json create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap/LICENSE create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap4-glyphicons/LICENSE create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.css create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap4-glyphicons/css/bootstrap-glyphicons.min.css create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.eot create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.svg create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.ttf create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap4-glyphicons/fonts/glyphicons/glyphicons-halflings-regular.woff2 create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.css create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.less create mode 100644 DuendeIdentityServer/DuendeIdP/wwwroot/lib/bootstrap4-glyphicons/maps/glyphicons-fontawesome.min.css diff --git a/DuendeIdentityServer/DuendeDynamicProviders/Config.cs b/DuendeIdentityServer/DuendeDynamicProviders/Config.cs index 9d36347..74c9530 100644 --- a/DuendeIdentityServer/DuendeDynamicProviders/Config.cs +++ b/DuendeIdentityServer/DuendeDynamicProviders/Config.cs @@ -1,53 +1,52 @@ -// Copyright (c) Duende Software. All rights reserved. -// See LICENSE in the project root for license information. +using Duende.IdentityServer.Models; +namespace DuendeDynamicProviders; -using Duende.IdentityServer.Models; -using System.Collections.Generic; -using Duende.IdentityServer; - -namespace DuendeDynamicProviders +public static class Config { - public static class Config - { - public static IEnumerable GetIdentityResources() + public static IEnumerable IdentityResources => + new IdentityResource[] { - return new IdentityResource[] - { - new IdentityResources.OpenId(), - new IdentityResources.Profile(), - }; - } + new IdentityResources.OpenId(), + new IdentityResources.Profile(), + }; - public static IEnumerable GetApis() + public static IEnumerable ApiScopes => + new ApiScope[] { - return new ApiResource[] - { - new ApiResource("api1", "My API #1") - }; - } + new ApiScope("scope1"), + new ApiScope("scope2"), + }; - public static IEnumerable GetApiScopes() + public static IEnumerable Clients => + new Client[] { - return new ApiScope[] + // m2m client credentials flow client + new Client { - new ApiScope("scope1"), - new ApiScope("scope2"), - }; - } - - public static IEnumerable GetClients() - { - return new[] + ClientId = "m2m.client", + ClientName = "Client Credentials Client", + + AllowedGrantTypes = GrantTypes.ClientCredentials, + ClientSecrets = { new Secret("511536EF-F270-4058-80CA-1C89C192F69A".Sha256()) }, + + AllowedScopes = { "scope1" } + }, + + // interactive client using code flow + pkce + new Client { - new Client - { - ClientId = "https://localhost:5002", - ClientName = "client", - ProtocolType = IdentityServerConstants.ProtocolTypes.OpenIdConnect, - AllowedScopes = {"openid", "profile"} - } - }; - } - } -} \ No newline at end of file + ClientId = "interactive", + ClientSecrets = { new Secret("49C1A7E1-0C79-4A89-A3D6-A37998FB86B0".Sha256()) }, + + AllowedGrantTypes = GrantTypes.Code, + + RedirectUris = { "https://localhost:44300/signin-oidc" }, + FrontChannelLogoutUri = "https://localhost:44300/signout-oidc", + PostLogoutRedirectUris = { "https://localhost:44300/signout-callback-oidc" }, + + AllowOfflineAccess = true, + AllowedScopes = { "openid", "profile", "scope2" } + }, + }; +} diff --git a/DuendeIdentityServer/DuendeDynamicProviders/DuendeDynamicProviders.csproj b/DuendeIdentityServer/DuendeDynamicProviders/DuendeDynamicProviders.csproj index f9762d1..d6c5ec5 100644 --- a/DuendeIdentityServer/DuendeDynamicProviders/DuendeDynamicProviders.csproj +++ b/DuendeIdentityServer/DuendeDynamicProviders/DuendeDynamicProviders.csproj @@ -2,26 +2,26 @@ net6.0 + enable - + - + - + PreserveNewest - + PreserveNewest - - PreserveNewest - + + \ No newline at end of file diff --git a/DuendeIdentityServer/DuendeDynamicProviders/HostingExtensions.cs b/DuendeIdentityServer/DuendeDynamicProviders/HostingExtensions.cs new file mode 100644 index 0000000..c1c56d8 --- /dev/null +++ b/DuendeIdentityServer/DuendeDynamicProviders/HostingExtensions.cs @@ -0,0 +1,99 @@ +using System.Security.Cryptography.X509Certificates; +using Duende.IdentityServer; +using Rsk.AspNetCore.Authentication.Saml2p; +using Rsk.Saml.DuendeIdentityServer.DynamicProviders; +using Serilog; + +namespace DuendeDynamicProviders; + +internal static class HostingExtensions +{ + public static WebApplication ConfigureServices(this WebApplicationBuilder builder) + { + builder.Services.AddRazorPages(); + + var isBuilder = builder.Services.AddIdentityServer(options => + { + options.Events.RaiseErrorEvents = true; + options.Events.RaiseInformationEvents = true; + options.Events.RaiseFailureEvents = true; + options.Events.RaiseSuccessEvents = true; + + // see https://docs.duendesoftware.com/identityserver/v6/fundamentals/resources/ + options.EmitStaticAudienceClaim = true; + }) + .AddTestUsers(TestUsers.Users); + + // in-memory, code config + isBuilder.AddInMemoryIdentityResources(Config.IdentityResources); + isBuilder.AddInMemoryApiScopes(Config.ApiScopes); + isBuilder.AddInMemoryClients(Config.Clients); + + // SP configuration - dynamic providers + isBuilder.AddSamlDynamicProvider(options => + { + // unstorable/reusable data, such as license information and events. This will override the data stored + options.Licensee = "your DEMO Licensee"; + options.LicenseKey = "your DEMO LicenseKey"; + }) + + // Use EntityFramework store for storing identity providers + //.AddIdentityProviderStore(); + + // use in memory store for storing identity providers + .AddInMemoryIdentityProviders(new List + { + new SamlDynamicIdentityProvider + { + SamlAuthenticationOptions = new Saml2pAuthenticationOptions + { + // The IdP you want to integrate with + IdentityProviderOptions = new IdpOptions + { + EntityId = "https://localhost:5000", + SigningCertificates = { new X509Certificate2("idsrv3test.cer") }, + SingleSignOnEndpoint = new SamlEndpoint("https://localhost:5000/saml/sso", SamlBindingTypes.HttpRedirect), + SingleLogoutEndpoint = new SamlEndpoint("https://localhost:5000/saml/slo", SamlBindingTypes.HttpRedirect) + }, + + // Details about yourself (the SP) + ServiceProviderOptions = new SpOptions + { + EntityId = "https://localhost:5004/saml", + MetadataPath = "/federation/saml/metadata", + SignAuthenticationRequests = false // OPTIONAL - use if you want to sign your auth requests + }, + + NameIdClaimType = "sub", + CallbackPath = "/federation/saml/signin-saml", // Duende prefixes "/federation/{scheme}" to all paths + SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme, + }, + + Scheme = "saml", + DisplayName = "saml", + Enabled = true, + } + }); + + builder.Services.AddAuthentication(); + + return builder.Build(); + } + + public static WebApplication ConfigurePipeline(this WebApplication app) + { + app.UseSerilogRequestLogging(); + + app.UseDeveloperExceptionPage(); + + app.UseStaticFiles(); + app.UseRouting(); + app.UseIdentityServer(); + app.UseAuthorization(); + + app.MapRazorPages() + .RequireAuthorization(); + + return app; + } +} \ No newline at end of file diff --git a/DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/AccessDenied.cshtml b/DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/AccessDenied.cshtml new file mode 100644 index 0000000..64cf7f9 --- /dev/null +++ b/DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/AccessDenied.cshtml @@ -0,0 +1,10 @@ +@page +@model DuendeDynamicProviders.Pages.Account.AccessDeniedModel +@{ +} +
+
+

Access Denied

+

You do not have permission to access that resource.

+
+
\ No newline at end of file diff --git a/DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/AccessDenied.cshtml.cs b/DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/AccessDenied.cshtml.cs new file mode 100644 index 0000000..1eea763 --- /dev/null +++ b/DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/AccessDenied.cshtml.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace DuendeDynamicProviders.Pages.Account +{ + public class AccessDeniedModel : PageModel + { + public void OnGet() + { + } + } +} diff --git a/DuendeIdentityServer/DuendeIdP/Views/Account/Login.cshtml b/DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Login/Index.cshtml similarity index 69% rename from DuendeIdentityServer/DuendeIdP/Views/Account/Login.cshtml rename to DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Login/Index.cshtml index e4ccb1d..f58fe43 100644 --- a/DuendeIdentityServer/DuendeIdP/Views/Account/Login.cshtml +++ b/DuendeIdentityServer/DuendeDynamicProviders/Pages/Account/Login/Index.cshtml @@ -1,4 +1,5 @@ -@model LoginViewModel +@page +@model DuendeDynamicProviders.Pages.Login.Index