├── .DS_Store ├── .gitignore ├── .vscode ├── launch.json └── tasks.json ├── README.md ├── Solution 1 - Setup OIDC system with client credentials ├── .vs │ ├── config │ │ └── applicationhost.config │ └── oidc-angular-identityserver │ │ └── v15 │ │ ├── .suo │ │ └── Server │ │ └── sqlite3 │ │ ├── db.lock │ │ └── storage.ide ├── AuthorizationServer │ ├── AuthorizationServer.csproj │ ├── AuthorizationServer.csproj.user │ ├── Config.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── Startup.cs │ ├── bin │ │ └── Debug │ │ │ └── netcoreapp2.0 │ │ │ ├── AuthorizationServer.deps.json │ │ │ ├── AuthorizationServer.dll │ │ │ ├── AuthorizationServer.pdb │ │ │ ├── AuthorizationServer.runtimeconfig.dev.json │ │ │ └── AuthorizationServer.runtimeconfig.json │ ├── obj │ │ ├── AuthorizationServer.csproj.nuget.cache │ │ ├── AuthorizationServer.csproj.nuget.g.props │ │ ├── AuthorizationServer.csproj.nuget.g.targets │ │ ├── Debug │ │ │ └── netcoreapp2.0 │ │ │ │ ├── AuthorizationServer.AssemblyInfo.cs │ │ │ │ ├── AuthorizationServer.AssemblyInfoInputs.cache │ │ │ │ ├── AuthorizationServer.csproj.CoreCompileInputs.cache │ │ │ │ ├── AuthorizationServer.csproj.FileListAbsolute.txt │ │ │ │ ├── AuthorizationServer.csprojResolveAssemblyReference.cache │ │ │ │ ├── AuthorizationServer.dll │ │ │ │ └── AuthorizationServer.pdb │ │ ├── Docker │ │ │ ├── AppType.cache │ │ │ ├── CanonicalServiceName.cache │ │ │ ├── ProjectReferences.cache │ │ │ ├── RelativeOutputAssemblyPath.Fast.cache │ │ │ ├── RelativeOutputAssemblyPath.Regular.cache │ │ │ └── TargetFramework.cache │ │ └── project.assets.json │ └── tempkey.rsa ├── ClientApp │ ├── .gitignore │ ├── ClientApp.csproj │ ├── ClientApp │ │ ├── app │ │ │ ├── app.browser.module.ts │ │ │ ├── app.server.module.ts │ │ │ ├── app.shared.module.ts │ │ │ └── components │ │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ └── app.component.ts │ │ │ │ ├── counter │ │ │ │ ├── counter.component.html │ │ │ │ ├── counter.component.spec.ts │ │ │ │ └── counter.component.ts │ │ │ │ ├── fetchdata │ │ │ │ ├── fetchdata.component.html │ │ │ │ └── fetchdata.component.ts │ │ │ │ ├── home │ │ │ │ ├── home.component.html │ │ │ │ └── home.component.ts │ │ │ │ └── navmenu │ │ │ │ ├── navmenu.component.css │ │ │ │ ├── navmenu.component.html │ │ │ │ └── navmenu.component.ts │ │ ├── boot.browser.ts │ │ ├── boot.server.ts │ │ └── test │ │ │ ├── boot-tests.ts │ │ │ └── karma.conf.js │ ├── Controllers │ │ ├── HomeController.cs │ │ ├── IdentityController.cs │ │ └── SampleDataController.cs │ ├── Program.cs │ ├── Startup.cs │ ├── Views │ │ ├── Home │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ └── _Layout.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── npm-shrinkwrap.json │ ├── package.json │ ├── tsconfig.json │ ├── webpack.config.js │ ├── webpack.config.vendor.js │ └── wwwroot │ │ └── favicon.ico ├── README.md ├── ResourceApi │ ├── Controllers │ │ ├── IdentityController.cs │ │ └── ValuesController.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── ResourceApi.csproj │ ├── ResourceApi.csproj.user │ ├── Startup.cs │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── bin │ │ └── Debug │ │ │ └── netcoreapp2.0 │ │ │ ├── ResourceApi.deps.json │ │ │ ├── ResourceApi.dll │ │ │ ├── ResourceApi.pdb │ │ │ ├── ResourceApi.runtimeconfig.dev.json │ │ │ └── ResourceApi.runtimeconfig.json │ └── obj │ │ ├── Debug │ │ └── netcoreapp2.0 │ │ │ ├── ResourceApi.AssemblyInfo.cs │ │ │ ├── ResourceApi.AssemblyInfoInputs.cache │ │ │ ├── ResourceApi.assets.cache │ │ │ ├── ResourceApi.csproj.CoreCompileInputs.cache │ │ │ ├── ResourceApi.csproj.FileListAbsolute.txt │ │ │ ├── ResourceApi.csprojAssemblyReference.cache │ │ │ ├── ResourceApi.csprojResolveAssemblyReference.cache │ │ │ ├── ResourceApi.dll │ │ │ ├── ResourceApi.pdb │ │ │ └── project.razor.json │ │ ├── ResourceApi.csproj.nuget.cache │ │ ├── ResourceApi.csproj.nuget.g.props │ │ ├── ResourceApi.csproj.nuget.g.targets │ │ └── project.assets.json ├── Screenshots │ └── calling-identity.PNG └── oidc-angular-identityserver.sln ├── Solution 2 - OIDC with interactive login and authentication code flow ├── .vs │ ├── config │ │ └── applicationhost.config │ └── oidc-angular-identityserver │ │ └── v15 │ │ ├── .suo │ │ └── Server │ │ └── sqlite3 │ │ ├── db.lock │ │ └── storage.ide ├── AuthorizationServer │ ├── AuthorizationServer.csproj │ ├── AuthorizationServer.csproj.user │ ├── Config.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── Quickstart │ │ ├── Account │ │ │ ├── AccountController.cs │ │ │ ├── AccountOptions.cs │ │ │ ├── ExternalProvider.cs │ │ │ ├── LoggedOutViewModel.cs │ │ │ ├── LoginInputModel.cs │ │ │ ├── LoginViewModel.cs │ │ │ ├── LogoutInputModel.cs │ │ │ └── LogoutViewModel.cs │ │ ├── Consent │ │ │ ├── ConsentController.cs │ │ │ ├── ConsentInputModel.cs │ │ │ ├── ConsentOptions.cs │ │ │ ├── ConsentViewModel.cs │ │ │ ├── ProcessConsentResult.cs │ │ │ └── ScopeViewModel.cs │ │ ├── Diagnostics │ │ │ ├── DiagnosticsController.cs │ │ │ └── DiagnosticsViewModel.cs │ │ ├── Grants │ │ │ ├── GrantsController.cs │ │ │ └── GrantsViewModel.cs │ │ ├── Home │ │ │ ├── ErrorViewModel.cs │ │ │ └── HomeController.cs │ │ ├── SecurityHeadersAttribute.cs │ │ └── TestUsers.cs │ ├── Startup.cs │ ├── Views │ │ ├── Account │ │ │ ├── LoggedOut.cshtml │ │ │ ├── Login.cshtml │ │ │ └── Logout.cshtml │ │ ├── Consent │ │ │ ├── Index.cshtml │ │ │ └── _ScopeListItem.cshtml │ │ ├── Diagnostics │ │ │ └── Index.cshtml │ │ ├── Grants │ │ │ └── Index.cshtml │ │ ├── Home │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _ValidationSummary.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── bin │ │ └── Debug │ │ │ └── netcoreapp2.0 │ │ │ ├── AuthorizationServer.deps.json │ │ │ ├── AuthorizationServer.dll │ │ │ ├── AuthorizationServer.pdb │ │ │ ├── AuthorizationServer.runtimeconfig.dev.json │ │ │ └── AuthorizationServer.runtimeconfig.json │ ├── obj │ │ ├── AuthorizationServer.csproj.nuget.cache │ │ ├── AuthorizationServer.csproj.nuget.g.props │ │ ├── AuthorizationServer.csproj.nuget.g.targets │ │ ├── Debug │ │ │ └── netcoreapp2.0 │ │ │ │ ├── AuthorizationServer.AssemblyInfo.cs │ │ │ │ ├── AuthorizationServer.AssemblyInfoInputs.cache │ │ │ │ ├── AuthorizationServer.csproj.CoreCompileInputs.cache │ │ │ │ ├── AuthorizationServer.csproj.FileListAbsolute.txt │ │ │ │ ├── AuthorizationServer.csprojResolveAssemblyReference.cache │ │ │ │ ├── AuthorizationServer.dll │ │ │ │ └── AuthorizationServer.pdb │ │ ├── Docker │ │ │ ├── AppType.cache │ │ │ ├── CanonicalServiceName.cache │ │ │ ├── ProjectReferences.cache │ │ │ ├── RelativeOutputAssemblyPath.Fast.cache │ │ │ ├── RelativeOutputAssemblyPath.Regular.cache │ │ │ └── TargetFramework.cache │ │ └── project.assets.json │ ├── tempkey.rsa │ └── wwwroot │ │ ├── css │ │ ├── site.css │ │ ├── site.less │ │ └── site.min.css │ │ ├── favicon.ico │ │ ├── icon.jpg │ │ ├── icon.png │ │ ├── js │ │ └── signout-redirect.js │ │ └── lib │ │ ├── bootstrap │ │ ├── css │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ └── bootstrap.min.css │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ ├── bootstrap.js │ │ │ └── bootstrap.min.js │ │ └── jquery │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map ├── ClientApp │ ├── .gitignore │ ├── ClientApp.csproj │ ├── ClientApp │ │ ├── app │ │ │ ├── app.browser.module.ts │ │ │ ├── app.server.module.ts │ │ │ ├── app.shared.module.ts │ │ │ └── components │ │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ └── app.component.ts │ │ │ │ ├── counter │ │ │ │ ├── counter.component.html │ │ │ │ ├── counter.component.spec.ts │ │ │ │ └── counter.component.ts │ │ │ │ ├── fetchdata │ │ │ │ ├── fetchdata.component.html │ │ │ │ └── fetchdata.component.ts │ │ │ │ ├── home │ │ │ │ ├── home.component.html │ │ │ │ └── home.component.ts │ │ │ │ └── navmenu │ │ │ │ ├── navmenu.component.css │ │ │ │ ├── navmenu.component.html │ │ │ │ └── navmenu.component.ts │ │ ├── boot.browser.ts │ │ ├── boot.server.ts │ │ └── test │ │ │ ├── boot-tests.ts │ │ │ └── karma.conf.js │ ├── Controllers │ │ ├── HomeController.cs │ │ ├── IdentityController.cs │ │ └── SampleDataController.cs │ ├── Models │ │ └── UserClaimsVM.cs │ ├── Program.cs │ ├── Startup.cs │ ├── Views │ │ ├── Home │ │ │ └── Index.cshtml │ │ ├── Identity │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ └── _Layout.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── npm-shrinkwrap.json │ ├── package.json │ ├── tsconfig.json │ ├── webpack.config.js │ ├── webpack.config.vendor.js │ └── wwwroot │ │ └── favicon.ico ├── README.md ├── ResourceApi │ ├── Controllers │ │ ├── IdentityController.cs │ │ └── ValuesController.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── ResourceApi.csproj │ ├── ResourceApi.csproj.user │ ├── Startup.cs │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── bin │ │ └── Debug │ │ │ └── netcoreapp2.0 │ │ │ ├── ResourceApi.deps.json │ │ │ ├── ResourceApi.dll │ │ │ ├── ResourceApi.pdb │ │ │ ├── ResourceApi.runtimeconfig.dev.json │ │ │ └── ResourceApi.runtimeconfig.json │ └── obj │ │ ├── Debug │ │ └── netcoreapp2.0 │ │ │ ├── ResourceApi.AssemblyInfo.cs │ │ │ ├── ResourceApi.AssemblyInfoInputs.cache │ │ │ ├── ResourceApi.csproj.CoreCompileInputs.cache │ │ │ ├── ResourceApi.csproj.FileListAbsolute.txt │ │ │ ├── ResourceApi.csprojResolveAssemblyReference.cache │ │ │ ├── ResourceApi.dll │ │ │ └── ResourceApi.pdb │ │ ├── ResourceApi.csproj.nuget.cache │ │ ├── ResourceApi.csproj.nuget.g.props │ │ ├── ResourceApi.csproj.nuget.g.targets │ │ └── project.assets.json ├── Screenshots │ ├── calling-identity.PNG │ └── identity-view-authcode.PNG └── oidc-angular-identityserver.sln ├── Solution 3 - OIDC with Hybrid flow and call api ├── .vs │ ├── config │ │ └── applicationhost.config │ └── oidc-angular-identityserver │ │ └── v15 │ │ ├── .suo │ │ └── Server │ │ └── sqlite3 │ │ ├── db.lock │ │ └── storage.ide ├── AuthorizationServer │ ├── AuthorizationServer.csproj │ ├── AuthorizationServer.csproj.user │ ├── Config.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── Quickstart │ │ ├── Account │ │ │ ├── AccountController.cs │ │ │ ├── AccountOptions.cs │ │ │ ├── ExternalProvider.cs │ │ │ ├── LoggedOutViewModel.cs │ │ │ ├── LoginInputModel.cs │ │ │ ├── LoginViewModel.cs │ │ │ ├── LogoutInputModel.cs │ │ │ └── LogoutViewModel.cs │ │ ├── Consent │ │ │ ├── ConsentController.cs │ │ │ ├── ConsentInputModel.cs │ │ │ ├── ConsentOptions.cs │ │ │ ├── ConsentViewModel.cs │ │ │ ├── ProcessConsentResult.cs │ │ │ └── ScopeViewModel.cs │ │ ├── Diagnostics │ │ │ ├── DiagnosticsController.cs │ │ │ └── DiagnosticsViewModel.cs │ │ ├── Grants │ │ │ ├── GrantsController.cs │ │ │ └── GrantsViewModel.cs │ │ ├── Home │ │ │ ├── ErrorViewModel.cs │ │ │ └── HomeController.cs │ │ ├── SecurityHeadersAttribute.cs │ │ └── TestUsers.cs │ ├── Startup.cs │ ├── Views │ │ ├── Account │ │ │ ├── LoggedOut.cshtml │ │ │ ├── Login.cshtml │ │ │ └── Logout.cshtml │ │ ├── Consent │ │ │ ├── Index.cshtml │ │ │ └── _ScopeListItem.cshtml │ │ ├── Diagnostics │ │ │ └── Index.cshtml │ │ ├── Grants │ │ │ └── Index.cshtml │ │ ├── Home │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _ValidationSummary.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── bin │ │ └── Debug │ │ │ └── netcoreapp2.0 │ │ │ ├── AuthorizationServer.deps.json │ │ │ ├── AuthorizationServer.dll │ │ │ ├── AuthorizationServer.pdb │ │ │ ├── AuthorizationServer.runtimeconfig.dev.json │ │ │ └── AuthorizationServer.runtimeconfig.json │ ├── obj │ │ ├── AuthorizationServer.csproj.nuget.cache │ │ ├── AuthorizationServer.csproj.nuget.g.props │ │ ├── AuthorizationServer.csproj.nuget.g.targets │ │ ├── Debug │ │ │ └── netcoreapp2.0 │ │ │ │ ├── AuthorizationServer.AssemblyInfo.cs │ │ │ │ ├── AuthorizationServer.AssemblyInfoInputs.cache │ │ │ │ ├── AuthorizationServer.csproj.CoreCompileInputs.cache │ │ │ │ ├── AuthorizationServer.csproj.FileListAbsolute.txt │ │ │ │ ├── AuthorizationServer.csprojResolveAssemblyReference.cache │ │ │ │ ├── AuthorizationServer.dll │ │ │ │ └── AuthorizationServer.pdb │ │ ├── Docker │ │ │ ├── AppType.cache │ │ │ ├── CanonicalServiceName.cache │ │ │ ├── ProjectReferences.cache │ │ │ ├── RelativeOutputAssemblyPath.Fast.cache │ │ │ ├── RelativeOutputAssemblyPath.Regular.cache │ │ │ └── TargetFramework.cache │ │ └── project.assets.json │ ├── tempkey.rsa │ └── wwwroot │ │ ├── css │ │ ├── site.css │ │ ├── site.less │ │ └── site.min.css │ │ ├── favicon.ico │ │ ├── icon.jpg │ │ ├── icon.png │ │ ├── js │ │ └── signout-redirect.js │ │ └── lib │ │ ├── bootstrap │ │ ├── css │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ └── bootstrap.min.css │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ ├── bootstrap.js │ │ │ └── bootstrap.min.js │ │ └── jquery │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map ├── ClientApp │ ├── .gitignore │ ├── ClientApp.csproj │ ├── ClientApp │ │ ├── app │ │ │ ├── app.browser.module.ts │ │ │ ├── app.server.module.ts │ │ │ ├── app.shared.module.ts │ │ │ └── components │ │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ └── app.component.ts │ │ │ │ ├── counter │ │ │ │ ├── counter.component.html │ │ │ │ ├── counter.component.spec.ts │ │ │ │ └── counter.component.ts │ │ │ │ ├── fetchdata │ │ │ │ ├── fetchdata.component.html │ │ │ │ └── fetchdata.component.ts │ │ │ │ ├── home │ │ │ │ ├── home.component.html │ │ │ │ └── home.component.ts │ │ │ │ └── navmenu │ │ │ │ ├── navmenu.component.css │ │ │ │ ├── navmenu.component.html │ │ │ │ └── navmenu.component.ts │ │ ├── boot.browser.ts │ │ ├── boot.server.ts │ │ └── test │ │ │ ├── boot-tests.ts │ │ │ └── karma.conf.js │ ├── Controllers │ │ ├── HomeController.cs │ │ ├── IdentityController.cs │ │ └── SampleDataController.cs │ ├── Models │ │ └── UserClaimsVM.cs │ ├── Program.cs │ ├── Startup.cs │ ├── Views │ │ ├── Home │ │ │ └── Index.cshtml │ │ ├── Identity │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ └── _Layout.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── npm-shrinkwrap.json │ ├── package.json │ ├── tsconfig.json │ ├── webpack.config.js │ ├── webpack.config.vendor.js │ └── wwwroot │ │ └── favicon.ico ├── README.md ├── ResourceApi │ ├── Controllers │ │ ├── IdentityController.cs │ │ └── ValuesController.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── ResourceApi.csproj │ ├── ResourceApi.csproj.user │ ├── Startup.cs │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── bin │ │ └── Debug │ │ │ └── netcoreapp2.0 │ │ │ ├── ResourceApi.deps.json │ │ │ ├── ResourceApi.dll │ │ │ ├── ResourceApi.pdb │ │ │ ├── ResourceApi.runtimeconfig.dev.json │ │ │ └── ResourceApi.runtimeconfig.json │ └── obj │ │ ├── Debug │ │ └── netcoreapp2.0 │ │ │ ├── ResourceApi.AssemblyInfo.cs │ │ │ ├── ResourceApi.AssemblyInfoInputs.cache │ │ │ ├── ResourceApi.csproj.CoreCompileInputs.cache │ │ │ ├── ResourceApi.csproj.FileListAbsolute.txt │ │ │ ├── ResourceApi.csprojResolveAssemblyReference.cache │ │ │ ├── ResourceApi.dll │ │ │ └── ResourceApi.pdb │ │ ├── ResourceApi.csproj.nuget.cache │ │ ├── ResourceApi.csproj.nuget.g.props │ │ ├── ResourceApi.csproj.nuget.g.targets │ │ └── project.assets.json ├── Screenshots │ └── calling-identity.PNG └── oidc-angular-identityserver.sln ├── Solution 4 - OIDC with Identity ├── .vs │ ├── config │ │ └── applicationhost.config │ └── oidc-angular-identityserver │ │ └── v15 │ │ ├── .suo │ │ └── Server │ │ └── sqlite3 │ │ ├── db.lock │ │ └── storage.ide ├── AuthorizationServer │ ├── AuthorizationServer.csproj │ ├── AuthorizationServer.csproj.user │ ├── Config.cs │ ├── Controllers │ │ └── AccountController.cs │ ├── Data │ │ ├── ApplicationDbContext.cs │ │ ├── ApplicationUser.cs │ │ └── Migrations │ │ │ ├── 00000000000000_CreateIdentitySchema.Designer.cs │ │ │ ├── 00000000000000_CreateIdentitySchema.cs │ │ │ └── ApplicationDbContextModelSnapshot.cs │ ├── Extensions │ │ ├── EmailSenderExtensions.cs │ │ └── UrlHelperExtensions.cs │ ├── Pages │ │ ├── About.cshtml │ │ ├── About.cshtml.cs │ │ ├── Account │ │ │ ├── AccessDenied.cshtml │ │ │ ├── AccessDenied.cshtml.cs │ │ │ ├── ConfirmEmail.cshtml │ │ │ ├── ConfirmEmail.cshtml.cs │ │ │ ├── ExternalLogin.cshtml │ │ │ ├── ExternalLogin.cshtml.cs │ │ │ ├── ForgotPassword.cshtml │ │ │ ├── ForgotPassword.cshtml.cs │ │ │ ├── ForgotPasswordConfirmation.cshtml │ │ │ ├── ForgotPasswordConfirmation.cshtml.cs │ │ │ ├── Lockout.cshtml │ │ │ ├── Lockout.cshtml.cs │ │ │ ├── Login.cshtml │ │ │ ├── Login.cshtml.cs │ │ │ ├── LoginWith2fa.cshtml │ │ │ ├── LoginWith2fa.cshtml.cs │ │ │ ├── LoginWithRecoveryCode.cshtml │ │ │ ├── LoginWithRecoveryCode.cshtml.cs │ │ │ ├── Manage │ │ │ │ ├── ChangePassword.cshtml │ │ │ │ ├── ChangePassword.cshtml.cs │ │ │ │ ├── Disable2fa.cshtml │ │ │ │ ├── Disable2fa.cshtml.cs │ │ │ │ ├── EnableAuthenticator.cshtml │ │ │ │ ├── EnableAuthenticator.cshtml.cs │ │ │ │ ├── ExternalLogins.cshtml │ │ │ │ ├── ExternalLogins.cshtml.cs │ │ │ │ ├── GenerateRecoveryCodes.cshtml │ │ │ │ ├── GenerateRecoveryCodes.cshtml.cs │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.cshtml.cs │ │ │ │ ├── ManageNavPages.cs │ │ │ │ ├── ResetAuthenticator.cshtml │ │ │ │ ├── ResetAuthenticator.cshtml.cs │ │ │ │ ├── SetPassword.cshtml │ │ │ │ ├── SetPassword.cshtml.cs │ │ │ │ ├── ShowRecoveryCodes.cshtml │ │ │ │ ├── ShowRecoveryCodes.cshtml.cs │ │ │ │ ├── TwoFactorAuthentication.cshtml │ │ │ │ ├── TwoFactorAuthentication.cshtml.cs │ │ │ │ ├── _Layout.cshtml │ │ │ │ ├── _ManageNav.cshtml │ │ │ │ ├── _StatusMessage.cshtml │ │ │ │ └── _ViewImports.cshtml │ │ │ ├── Register.cshtml │ │ │ ├── Register.cshtml.cs │ │ │ ├── ResetPassword.cshtml │ │ │ ├── ResetPassword.cshtml.cs │ │ │ ├── ResetPasswordConfirmation.cshtml │ │ │ ├── ResetPasswordConfirmation.cshtml.cs │ │ │ ├── SignedOut.cshtml │ │ │ ├── SignedOut.cshtml.cs │ │ │ └── _ViewImports.cshtml │ │ ├── Contact.cshtml │ │ ├── Contact.cshtml.cs │ │ ├── Error.cshtml │ │ ├── Error.cshtml.cs │ │ ├── Index.cshtml │ │ ├── Index.cshtml.cs │ │ ├── _Layout.cshtml │ │ ├── _LoginPartial.cshtml │ │ ├── _ValidationScriptsPartial.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── Quickstart │ │ ├── Account │ │ │ ├── AccountController.cs │ │ │ ├── AccountOptions.cs │ │ │ ├── ExternalProvider.cs │ │ │ ├── LoggedOutViewModel.cs │ │ │ ├── LoginInputModel.cs │ │ │ ├── LoginViewModel.cs │ │ │ ├── LogoutInputModel.cs │ │ │ └── LogoutViewModel.cs │ │ ├── Consent │ │ │ ├── ConsentController.cs │ │ │ ├── ConsentInputModel.cs │ │ │ ├── ConsentOptions.cs │ │ │ ├── ConsentViewModel.cs │ │ │ ├── ProcessConsentResult.cs │ │ │ └── ScopeViewModel.cs │ │ ├── Diagnostics │ │ │ ├── DiagnosticsController.cs │ │ │ └── DiagnosticsViewModel.cs │ │ ├── Grants │ │ │ ├── GrantsController.cs │ │ │ └── GrantsViewModel.cs │ │ ├── Home │ │ │ ├── ErrorViewModel.cs │ │ │ └── HomeController.cs │ │ ├── SecurityHeadersAttribute.cs │ │ └── TestUsers.cs │ ├── Services │ │ ├── EmailSender.cs │ │ └── IEmailSender.cs │ ├── Startup.cs │ ├── Views │ │ ├── Account │ │ │ ├── LoggedOut.cshtml │ │ │ ├── Login.cshtml │ │ │ └── Logout.cshtml │ │ ├── Consent │ │ │ ├── Index.cshtml │ │ │ └── _ScopeListItem.cshtml │ │ ├── Diagnostics │ │ │ └── Index.cshtml │ │ ├── Grants │ │ │ └── Index.cshtml │ │ ├── Home │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _ValidationSummary.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── bin │ │ └── Debug │ │ │ └── netcoreapp2.0 │ │ │ ├── AuthorizationServer.deps.json │ │ │ ├── AuthorizationServer.dll │ │ │ ├── AuthorizationServer.pdb │ │ │ ├── AuthorizationServer.runtimeconfig.dev.json │ │ │ └── AuthorizationServer.runtimeconfig.json │ ├── bundleconfig.json │ ├── obj │ │ ├── AuthorizationServer.csproj.EntityFrameworkCore.targets │ │ ├── AuthorizationServer.csproj.nuget.cache │ │ ├── AuthorizationServer.csproj.nuget.g.props │ │ ├── AuthorizationServer.csproj.nuget.g.targets │ │ ├── Debug │ │ │ └── netcoreapp2.0 │ │ │ │ ├── AuthorizationServer.AssemblyInfo.cs │ │ │ │ ├── AuthorizationServer.AssemblyInfoInputs.cache │ │ │ │ ├── AuthorizationServer.csproj.CoreCompileInputs.cache │ │ │ │ ├── AuthorizationServer.csproj.FileListAbsolute.txt │ │ │ │ ├── AuthorizationServer.csprojResolveAssemblyReference.cache │ │ │ │ ├── AuthorizationServer.dll │ │ │ │ ├── AuthorizationServer.pdb │ │ │ │ └── UserSecretsAssemblyInfo.cs │ │ └── project.assets.json │ ├── tempkey.rsa │ └── wwwroot │ │ ├── css │ │ ├── site.css │ │ ├── site.less │ │ └── site.min.css │ │ ├── favicon.ico │ │ ├── icon.jpg │ │ ├── icon.png │ │ ├── images │ │ ├── banner1.svg │ │ ├── banner2.svg │ │ ├── banner3.svg │ │ └── banner4.svg │ │ ├── js │ │ ├── signout-redirect.js │ │ ├── site.js │ │ └── site.min.js │ │ └── lib │ │ ├── bootstrap │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── css │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ └── bootstrap.min.css │ │ ├── dist │ │ │ ├── css │ │ │ │ ├── bootstrap-theme.css │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ ├── bootstrap-theme.min.css.map │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ └── bootstrap.min.css.map │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ │ ├── bootstrap.js │ │ │ │ └── npm.js │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ ├── bootstrap.js │ │ │ └── bootstrap.min.js │ │ ├── jquery-validation-unobtrusive │ │ ├── .bower.json │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js │ │ ├── jquery-validation │ │ ├── .bower.json │ │ ├── LICENSE.md │ │ └── dist │ │ │ ├── additional-methods.js │ │ │ └── jquery.validate.js │ │ └── jquery │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ ├── dist │ │ ├── jquery.js │ │ └── jquery.min.map │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map ├── ClientApp │ ├── .gitignore │ ├── ClientApp.csproj │ ├── ClientApp │ │ ├── app │ │ │ ├── app.browser.module.ts │ │ │ ├── app.server.module.ts │ │ │ ├── app.shared.module.ts │ │ │ └── components │ │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ └── app.component.ts │ │ │ │ ├── counter │ │ │ │ ├── counter.component.html │ │ │ │ ├── counter.component.spec.ts │ │ │ │ └── counter.component.ts │ │ │ │ ├── fetchdata │ │ │ │ ├── fetchdata.component.html │ │ │ │ └── fetchdata.component.ts │ │ │ │ ├── home │ │ │ │ ├── home.component.html │ │ │ │ └── home.component.ts │ │ │ │ └── navmenu │ │ │ │ ├── navmenu.component.css │ │ │ │ ├── navmenu.component.html │ │ │ │ └── navmenu.component.ts │ │ ├── boot.browser.ts │ │ ├── boot.server.ts │ │ └── test │ │ │ ├── boot-tests.ts │ │ │ └── karma.conf.js │ ├── Controllers │ │ ├── HomeController.cs │ │ ├── IdentityController.cs │ │ └── SampleDataController.cs │ ├── Models │ │ └── UserClaimsVM.cs │ ├── Program.cs │ ├── Startup.cs │ ├── Views │ │ ├── Home │ │ │ └── Index.cshtml │ │ ├── Identity │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ └── _Layout.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── npm-shrinkwrap.json │ ├── package.json │ ├── tsconfig.json │ ├── webpack.config.js │ ├── webpack.config.vendor.js │ └── wwwroot │ │ └── favicon.ico ├── README.md ├── ResourceApi │ ├── Controllers │ │ ├── IdentityController.cs │ │ └── ValuesController.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── ResourceApi.csproj │ ├── ResourceApi.csproj.user │ ├── Startup.cs │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── bin │ │ └── Debug │ │ │ └── netcoreapp2.0 │ │ │ ├── ResourceApi.deps.json │ │ │ ├── ResourceApi.dll │ │ │ ├── ResourceApi.pdb │ │ │ ├── ResourceApi.runtimeconfig.dev.json │ │ │ └── ResourceApi.runtimeconfig.json │ └── obj │ │ ├── Debug │ │ └── netcoreapp2.0 │ │ │ ├── ResourceApi.AssemblyInfo.cs │ │ │ ├── ResourceApi.AssemblyInfoInputs.cache │ │ │ ├── ResourceApi.csproj.CoreCompileInputs.cache │ │ │ ├── ResourceApi.csproj.FileListAbsolute.txt │ │ │ ├── ResourceApi.csprojResolveAssemblyReference.cache │ │ │ ├── ResourceApi.dll │ │ │ └── ResourceApi.pdb │ │ ├── ResourceApi.csproj.nuget.cache │ │ ├── ResourceApi.csproj.nuget.g.props │ │ ├── ResourceApi.csproj.nuget.g.targets │ │ └── project.assets.json ├── Screenshots │ └── calling-identity.PNG └── oidc-angular-identityserver.sln ├── Solution 5 - OIDC with EF for configuration ├── .vs │ ├── config │ │ └── applicationhost.config │ └── oidc-angular-identityserver │ │ ├── DesignTimeBuild │ │ └── .dtbcache │ │ ├── config │ │ └── applicationhost.config │ │ ├── v15 │ │ ├── .suo │ │ └── Server │ │ │ └── sqlite3 │ │ │ ├── db.lock │ │ │ └── storage.ide │ │ └── v16 │ │ ├── .suo │ │ └── Server │ │ └── sqlite3 │ │ ├── db.lock │ │ └── storage.ide ├── AuthorizationServer │ ├── AuthorizationServer.csproj │ ├── AuthorizationServer.csproj.user │ ├── Config.cs │ ├── Controllers │ │ └── AccountController.cs │ ├── Data │ │ ├── ApplicationDbContext.cs │ │ ├── ApplicationUser.cs │ │ ├── Migrations │ │ │ ├── 00000000000000_CreateIdentitySchema.Designer.cs │ │ │ ├── 00000000000000_CreateIdentitySchema.cs │ │ │ ├── ApplicationDbContextModelSnapshot.cs │ │ │ └── IdentityServer │ │ │ │ ├── Configuration │ │ │ │ ├── 20180328175934_InitConfigration.Designer.cs │ │ │ │ ├── 20180328175934_InitConfigration.cs │ │ │ │ └── ConfigurationDbContextModelSnapshot.cs │ │ │ │ └── PersistedGrant │ │ │ │ ├── 20180328175949_InitPersistedGrant.Designer.cs │ │ │ │ ├── 20180328175949_InitPersistedGrant.cs │ │ │ │ └── PersistedGrantDbContextModelSnapshot.cs │ │ └── SeedData.cs │ ├── Extensions │ │ ├── EmailSenderExtensions.cs │ │ └── UrlHelperExtensions.cs │ ├── Pages │ │ ├── About.cshtml │ │ ├── About.cshtml.cs │ │ ├── Account │ │ │ ├── AccessDenied.cshtml │ │ │ ├── AccessDenied.cshtml.cs │ │ │ ├── ConfirmEmail.cshtml │ │ │ ├── ConfirmEmail.cshtml.cs │ │ │ ├── ExternalLogin.cshtml │ │ │ ├── ExternalLogin.cshtml.cs │ │ │ ├── ForgotPassword.cshtml │ │ │ ├── ForgotPassword.cshtml.cs │ │ │ ├── ForgotPasswordConfirmation.cshtml │ │ │ ├── ForgotPasswordConfirmation.cshtml.cs │ │ │ ├── Lockout.cshtml │ │ │ ├── Lockout.cshtml.cs │ │ │ ├── Login.cshtml │ │ │ ├── Login.cshtml.cs │ │ │ ├── LoginWith2fa.cshtml │ │ │ ├── LoginWith2fa.cshtml.cs │ │ │ ├── LoginWithRecoveryCode.cshtml │ │ │ ├── LoginWithRecoveryCode.cshtml.cs │ │ │ ├── Manage │ │ │ │ ├── ChangePassword.cshtml │ │ │ │ ├── ChangePassword.cshtml.cs │ │ │ │ ├── Disable2fa.cshtml │ │ │ │ ├── Disable2fa.cshtml.cs │ │ │ │ ├── EnableAuthenticator.cshtml │ │ │ │ ├── EnableAuthenticator.cshtml.cs │ │ │ │ ├── ExternalLogins.cshtml │ │ │ │ ├── ExternalLogins.cshtml.cs │ │ │ │ ├── GenerateRecoveryCodes.cshtml │ │ │ │ ├── GenerateRecoveryCodes.cshtml.cs │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.cshtml.cs │ │ │ │ ├── ManageNavPages.cs │ │ │ │ ├── ResetAuthenticator.cshtml │ │ │ │ ├── ResetAuthenticator.cshtml.cs │ │ │ │ ├── SetPassword.cshtml │ │ │ │ ├── SetPassword.cshtml.cs │ │ │ │ ├── ShowRecoveryCodes.cshtml │ │ │ │ ├── ShowRecoveryCodes.cshtml.cs │ │ │ │ ├── TwoFactorAuthentication.cshtml │ │ │ │ ├── TwoFactorAuthentication.cshtml.cs │ │ │ │ ├── _Layout.cshtml │ │ │ │ ├── _ManageNav.cshtml │ │ │ │ ├── _StatusMessage.cshtml │ │ │ │ └── _ViewImports.cshtml │ │ │ ├── Register.cshtml │ │ │ ├── Register.cshtml.cs │ │ │ ├── ResetPassword.cshtml │ │ │ ├── ResetPassword.cshtml.cs │ │ │ ├── ResetPasswordConfirmation.cshtml │ │ │ ├── ResetPasswordConfirmation.cshtml.cs │ │ │ ├── SignedOut.cshtml │ │ │ ├── SignedOut.cshtml.cs │ │ │ └── _ViewImports.cshtml │ │ ├── Contact.cshtml │ │ ├── Contact.cshtml.cs │ │ ├── Error.cshtml │ │ ├── Error.cshtml.cs │ │ ├── Index.cshtml │ │ ├── Index.cshtml.cs │ │ ├── _Layout.cshtml │ │ ├── _LoginPartial.cshtml │ │ ├── _ValidationScriptsPartial.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── Quickstart │ │ ├── Account │ │ │ ├── AccountController.cs │ │ │ ├── AccountOptions.cs │ │ │ ├── ExternalProvider.cs │ │ │ ├── LoggedOutViewModel.cs │ │ │ ├── LoginInputModel.cs │ │ │ ├── LoginViewModel.cs │ │ │ ├── LogoutInputModel.cs │ │ │ └── LogoutViewModel.cs │ │ ├── Consent │ │ │ ├── ConsentController.cs │ │ │ ├── ConsentInputModel.cs │ │ │ ├── ConsentOptions.cs │ │ │ ├── ConsentViewModel.cs │ │ │ ├── ProcessConsentResult.cs │ │ │ └── ScopeViewModel.cs │ │ ├── Diagnostics │ │ │ ├── DiagnosticsController.cs │ │ │ └── DiagnosticsViewModel.cs │ │ ├── Grants │ │ │ ├── GrantsController.cs │ │ │ └── GrantsViewModel.cs │ │ ├── Home │ │ │ ├── ErrorViewModel.cs │ │ │ └── HomeController.cs │ │ ├── SecurityHeadersAttribute.cs │ │ └── TestUsers.cs │ ├── Services │ │ ├── EmailSender.cs │ │ └── IEmailSender.cs │ ├── Startup.cs │ ├── Views │ │ ├── Account │ │ │ ├── LoggedOut.cshtml │ │ │ ├── Login.cshtml │ │ │ └── Logout.cshtml │ │ ├── Consent │ │ │ ├── Index.cshtml │ │ │ └── _ScopeListItem.cshtml │ │ ├── Diagnostics │ │ │ └── Index.cshtml │ │ ├── Grants │ │ │ └── Index.cshtml │ │ ├── Home │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ ├── _Layout.cshtml │ │ │ └── _ValidationSummary.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── bin │ │ └── Debug │ │ │ └── netcoreapp2.0 │ │ │ ├── AuthorizationServer.deps.json │ │ │ ├── AuthorizationServer.dll │ │ │ ├── AuthorizationServer.pdb │ │ │ ├── AuthorizationServer.runtimeconfig.dev.json │ │ │ └── AuthorizationServer.runtimeconfig.json │ ├── bundleconfig.json │ ├── obj │ │ ├── AuthorizationServer.csproj.EntityFrameworkCore.targets │ │ ├── AuthorizationServer.csproj.nuget.cache │ │ ├── AuthorizationServer.csproj.nuget.dgspec.json │ │ ├── AuthorizationServer.csproj.nuget.g.props │ │ ├── AuthorizationServer.csproj.nuget.g.targets │ │ ├── Debug │ │ │ └── netcoreapp2.0 │ │ │ │ ├── AuthorizationServer.AssemblyInfo.cs │ │ │ │ ├── AuthorizationServer.AssemblyInfoInputs.cache │ │ │ │ ├── AuthorizationServer.assets.cache │ │ │ │ ├── AuthorizationServer.csproj.CoreCompileInputs.cache │ │ │ │ ├── AuthorizationServer.csproj.FileListAbsolute.txt │ │ │ │ ├── AuthorizationServer.csprojAssemblyReference.cache │ │ │ │ ├── AuthorizationServer.dll │ │ │ │ ├── AuthorizationServer.pdb │ │ │ │ └── UserSecretsAssemblyInfo.cs │ │ └── project.assets.json │ ├── tempkey.rsa │ └── wwwroot │ │ ├── css │ │ ├── site.css │ │ ├── site.less │ │ └── site.min.css │ │ ├── favicon.ico │ │ ├── icon.jpg │ │ ├── icon.png │ │ ├── images │ │ ├── banner1.svg │ │ ├── banner2.svg │ │ ├── banner3.svg │ │ └── banner4.svg │ │ ├── js │ │ ├── signout-redirect.js │ │ ├── site.js │ │ └── site.min.js │ │ └── lib │ │ ├── bootstrap │ │ ├── .bower.json │ │ ├── LICENSE │ │ ├── css │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ └── bootstrap.min.css │ │ ├── dist │ │ │ ├── css │ │ │ │ ├── bootstrap-theme.css │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ ├── bootstrap-theme.min.css.map │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ └── bootstrap.min.css.map │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ │ ├── bootstrap.js │ │ │ │ └── npm.js │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ ├── bootstrap.js │ │ │ └── bootstrap.min.js │ │ ├── jquery-validation-unobtrusive │ │ ├── .bower.json │ │ ├── jquery.validate.unobtrusive.js │ │ └── jquery.validate.unobtrusive.min.js │ │ ├── jquery-validation │ │ ├── .bower.json │ │ ├── LICENSE.md │ │ └── dist │ │ │ ├── additional-methods.js │ │ │ └── jquery.validate.js │ │ └── jquery │ │ ├── .bower.json │ │ ├── LICENSE.txt │ │ ├── dist │ │ ├── jquery.js │ │ └── jquery.min.map │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ └── jquery.min.map ├── ClientApp │ ├── .gitignore │ ├── ClientApp.csproj │ ├── ClientApp │ │ ├── app │ │ │ ├── app.browser.module.ts │ │ │ ├── app.server.module.ts │ │ │ ├── app.shared.module.ts │ │ │ └── components │ │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ └── app.component.ts │ │ │ │ ├── counter │ │ │ │ ├── counter.component.html │ │ │ │ ├── counter.component.spec.ts │ │ │ │ └── counter.component.ts │ │ │ │ ├── fetchdata │ │ │ │ ├── fetchdata.component.html │ │ │ │ └── fetchdata.component.ts │ │ │ │ ├── home │ │ │ │ ├── home.component.html │ │ │ │ └── home.component.ts │ │ │ │ └── navmenu │ │ │ │ ├── navmenu.component.css │ │ │ │ ├── navmenu.component.html │ │ │ │ └── navmenu.component.ts │ │ ├── boot.browser.ts │ │ ├── boot.server.ts │ │ └── test │ │ │ ├── boot-tests.ts │ │ │ └── karma.conf.js │ ├── Controllers │ │ ├── HomeController.cs │ │ ├── IdentityController.cs │ │ └── SampleDataController.cs │ ├── Models │ │ └── UserClaimsVM.cs │ ├── Program.cs │ ├── Startup.cs │ ├── Views │ │ ├── Home │ │ │ └── Index.cshtml │ │ ├── Identity │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ ├── Error.cshtml │ │ │ └── _Layout.cshtml │ │ ├── _ViewImports.cshtml │ │ └── _ViewStart.cshtml │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── npm-shrinkwrap.json │ ├── package.json │ ├── tsconfig.json │ ├── webpack.config.js │ ├── webpack.config.vendor.js │ └── wwwroot │ │ └── favicon.ico ├── README.md ├── ResourceApi │ ├── Controllers │ │ ├── IdentityController.cs │ │ └── ValuesController.cs │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── ResourceApi.csproj │ ├── ResourceApi.csproj.user │ ├── Startup.cs │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── bin │ │ └── Debug │ │ │ └── netcoreapp2.0 │ │ │ ├── ResourceApi.deps.json │ │ │ ├── ResourceApi.dll │ │ │ ├── ResourceApi.pdb │ │ │ ├── ResourceApi.runtimeconfig.dev.json │ │ │ └── ResourceApi.runtimeconfig.json │ └── obj │ │ ├── Debug │ │ └── netcoreapp2.0 │ │ │ ├── ResourceApi.AssemblyInfo.cs │ │ │ ├── ResourceApi.AssemblyInfoInputs.cache │ │ │ ├── ResourceApi.assets.cache │ │ │ ├── ResourceApi.csproj.CoreCompileInputs.cache │ │ │ ├── ResourceApi.csproj.FileListAbsolute.txt │ │ │ ├── ResourceApi.csprojAssemblyReference.cache │ │ │ ├── ResourceApi.dll │ │ │ └── ResourceApi.pdb │ │ ├── ResourceApi.csproj.nuget.cache │ │ ├── ResourceApi.csproj.nuget.dgspec.json │ │ ├── ResourceApi.csproj.nuget.g.props │ │ ├── ResourceApi.csproj.nuget.g.targets │ │ └── project.assets.json ├── Screenshots │ └── calling-identity.PNG └── oidc-angular-identityserver.sln └── Solution 6 - OIDC and Angular client ├── .DS_Store ├── .gitignore ├── .vs ├── config │ └── applicationhost.config └── oidc-angular-identityserver │ ├── v15 │ ├── .suo │ └── Server │ │ └── sqlite3 │ │ ├── db.lock │ │ ├── storage.ide │ │ ├── storage.ide-shm │ │ └── storage.ide-wal │ └── xs │ ├── UserPrefs.xml │ └── sqlite3 │ ├── db.lock │ ├── storage.ide │ ├── storage.ide-shm │ └── storage.ide-wal ├── AuthorizationServer ├── .gitignore ├── AuthorizationServer.csproj ├── AuthorizationServer.csproj.user ├── Config.cs ├── Controllers │ └── AccountController.cs ├── Data │ ├── ApplicationDbContext.cs │ ├── ApplicationUser.cs │ ├── Migrations │ │ ├── 00000000000000_CreateIdentitySchema.Designer.cs │ │ ├── 00000000000000_CreateIdentitySchema.cs │ │ ├── ApplicationDbContextModelSnapshot.cs │ │ └── IdentityServer │ │ │ ├── Configuration │ │ │ ├── 20180328175934_InitConfigration.Designer.cs │ │ │ ├── 20180328175934_InitConfigration.cs │ │ │ └── ConfigurationDbContextModelSnapshot.cs │ │ │ └── PersistedGrant │ │ │ ├── 20180328175949_InitPersistedGrant.Designer.cs │ │ │ ├── 20180328175949_InitPersistedGrant.cs │ │ │ └── PersistedGrantDbContextModelSnapshot.cs │ └── SeedData.cs ├── Extensions │ ├── EmailSenderExtensions.cs │ └── UrlHelperExtensions.cs ├── Pages │ ├── About.cshtml │ ├── About.cshtml.cs │ ├── Account │ │ ├── AccessDenied.cshtml │ │ ├── AccessDenied.cshtml.cs │ │ ├── ConfirmEmail.cshtml │ │ ├── ConfirmEmail.cshtml.cs │ │ ├── ExternalLogin.cshtml │ │ ├── ExternalLogin.cshtml.cs │ │ ├── ForgotPassword.cshtml │ │ ├── ForgotPassword.cshtml.cs │ │ ├── ForgotPasswordConfirmation.cshtml │ │ ├── ForgotPasswordConfirmation.cshtml.cs │ │ ├── Lockout.cshtml │ │ ├── Lockout.cshtml.cs │ │ ├── Login.cshtml │ │ ├── Login.cshtml.cs │ │ ├── LoginWith2fa.cshtml │ │ ├── LoginWith2fa.cshtml.cs │ │ ├── LoginWithRecoveryCode.cshtml │ │ ├── LoginWithRecoveryCode.cshtml.cs │ │ ├── Manage │ │ │ ├── ChangePassword.cshtml │ │ │ ├── ChangePassword.cshtml.cs │ │ │ ├── Disable2fa.cshtml │ │ │ ├── Disable2fa.cshtml.cs │ │ │ ├── EnableAuthenticator.cshtml │ │ │ ├── EnableAuthenticator.cshtml.cs │ │ │ ├── ExternalLogins.cshtml │ │ │ ├── ExternalLogins.cshtml.cs │ │ │ ├── GenerateRecoveryCodes.cshtml │ │ │ ├── GenerateRecoveryCodes.cshtml.cs │ │ │ ├── Index.cshtml │ │ │ ├── Index.cshtml.cs │ │ │ ├── ManageNavPages.cs │ │ │ ├── ResetAuthenticator.cshtml │ │ │ ├── ResetAuthenticator.cshtml.cs │ │ │ ├── SetPassword.cshtml │ │ │ ├── SetPassword.cshtml.cs │ │ │ ├── ShowRecoveryCodes.cshtml │ │ │ ├── ShowRecoveryCodes.cshtml.cs │ │ │ ├── TwoFactorAuthentication.cshtml │ │ │ ├── TwoFactorAuthentication.cshtml.cs │ │ │ ├── _Layout.cshtml │ │ │ ├── _ManageNav.cshtml │ │ │ ├── _StatusMessage.cshtml │ │ │ └── _ViewImports.cshtml │ │ ├── Register.cshtml │ │ ├── Register.cshtml.cs │ │ ├── ResetPassword.cshtml │ │ ├── ResetPassword.cshtml.cs │ │ ├── ResetPasswordConfirmation.cshtml │ │ ├── ResetPasswordConfirmation.cshtml.cs │ │ ├── SignedOut.cshtml │ │ ├── SignedOut.cshtml.cs │ │ └── _ViewImports.cshtml │ ├── Contact.cshtml │ ├── Contact.cshtml.cs │ ├── Error.cshtml │ ├── Error.cshtml.cs │ ├── Index.cshtml │ ├── Index.cshtml.cs │ ├── _Layout.cshtml │ ├── _LoginPartial.cshtml │ ├── _ValidationScriptsPartial.cshtml │ ├── _ViewImports.cshtml │ └── _ViewStart.cshtml ├── Program.cs ├── Properties │ └── launchSettings.json ├── Quickstart │ ├── Account │ │ ├── AccountController.cs │ │ ├── AccountOptions.cs │ │ ├── ExternalProvider.cs │ │ ├── LoggedOutViewModel.cs │ │ ├── LoginInputModel.cs │ │ ├── LoginViewModel.cs │ │ ├── LogoutInputModel.cs │ │ └── LogoutViewModel.cs │ ├── Consent │ │ ├── ConsentController.cs │ │ ├── ConsentInputModel.cs │ │ ├── ConsentOptions.cs │ │ ├── ConsentViewModel.cs │ │ ├── ProcessConsentResult.cs │ │ └── ScopeViewModel.cs │ ├── Diagnostics │ │ ├── DiagnosticsController.cs │ │ └── DiagnosticsViewModel.cs │ ├── Grants │ │ ├── GrantsController.cs │ │ └── GrantsViewModel.cs │ ├── Home │ │ ├── ErrorViewModel.cs │ │ └── HomeController.cs │ ├── SecurityHeadersAttribute.cs │ └── TestUsers.cs ├── Services │ ├── EmailSender.cs │ └── IEmailSender.cs ├── Startup.cs ├── Views │ ├── Account │ │ ├── LoggedOut.cshtml │ │ ├── Login.cshtml │ │ └── Logout.cshtml │ ├── Consent │ │ ├── Index.cshtml │ │ └── _ScopeListItem.cshtml │ ├── Diagnostics │ │ └── Index.cshtml │ ├── Grants │ │ └── Index.cshtml │ ├── Home │ │ └── Index.cshtml │ ├── Shared │ │ ├── Error.cshtml │ │ ├── _Layout.cshtml │ │ └── _ValidationSummary.cshtml │ ├── _ViewImports.cshtml │ └── _ViewStart.cshtml ├── appsettings.Development.json ├── appsettings.json ├── bundleconfig.json ├── obj │ ├── AuthorizationServer.csproj.EntityFrameworkCore.targets │ ├── AuthorizationServer.csproj.nuget.cache │ ├── AuthorizationServer.csproj.nuget.g.props │ ├── AuthorizationServer.csproj.nuget.g.targets │ ├── Debug │ │ └── netcoreapp2.0 │ │ │ ├── AuthorizationServer.AssemblyInfo.cs │ │ │ ├── AuthorizationServer.AssemblyInfoInputs.cache │ │ │ ├── AuthorizationServer.assets.cache │ │ │ ├── AuthorizationServer.csproj.CoreCompileInputs.cache │ │ │ ├── AuthorizationServer.csproj.FileListAbsolute.txt │ │ │ └── AuthorizationServer.csprojAssemblyReference.cache │ └── project.assets.json ├── tempkey.rsa └── wwwroot │ ├── css │ ├── site.css │ ├── site.less │ └── site.min.css │ ├── favicon.ico │ ├── icon.jpg │ ├── icon.png │ ├── images │ ├── banner1.svg │ ├── banner2.svg │ ├── banner3.svg │ └── banner4.svg │ ├── js │ ├── signout-redirect.js │ ├── site.js │ └── site.min.js │ └── lib │ ├── bootstrap │ ├── .bower.json │ ├── LICENSE │ ├── css │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ └── bootstrap.min.css │ ├── dist │ │ ├── css │ │ │ ├── bootstrap-theme.css │ │ │ ├── bootstrap-theme.css.map │ │ │ ├── bootstrap-theme.min.css.map │ │ │ ├── bootstrap.css │ │ │ ├── bootstrap.css.map │ │ │ └── bootstrap.min.css.map │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ ├── bootstrap.js │ │ │ └── npm.js │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ └── js │ │ ├── bootstrap.js │ │ └── bootstrap.min.js │ ├── jquery-validation-unobtrusive │ ├── .bower.json │ ├── jquery.validate.unobtrusive.js │ └── jquery.validate.unobtrusive.min.js │ ├── jquery-validation │ ├── .bower.json │ ├── LICENSE.md │ └── dist │ │ ├── additional-methods.js │ │ └── jquery.validate.js │ └── jquery │ ├── .bower.json │ ├── LICENSE.txt │ ├── dist │ ├── jquery.js │ └── jquery.min.map │ ├── jquery.js │ ├── jquery.min.js │ └── jquery.min.map ├── ClientApp ├── .gitignore ├── ClientApp.csproj ├── ClientApp │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── angular.json │ ├── browserslist │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.json │ ├── karma.conf.js │ ├── package.json │ ├── src │ │ ├── app │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.spec.ts │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── core │ │ │ │ ├── auth │ │ │ │ │ └── auth.service.ts │ │ │ │ └── core.module.ts │ │ │ ├── counter │ │ │ │ ├── counter.component.html │ │ │ │ ├── counter.component.spec.ts │ │ │ │ └── counter.component.ts │ │ │ ├── fetch-data │ │ │ │ ├── fetch-data.component.html │ │ │ │ └── fetch-data.component.ts │ │ │ ├── home │ │ │ │ ├── home.component.html │ │ │ │ └── home.component.ts │ │ │ ├── nav-menu │ │ │ │ ├── nav-menu.component.html │ │ │ │ ├── nav-menu.component.scss │ │ │ │ └── nav-menu.component.ts │ │ │ └── unauthorized │ │ │ │ ├── unauthorized.component.html │ │ │ │ └── unauthorized.component.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.scss │ │ └── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ ├── tsconfig.spec.json │ ├── tslint.json │ └── yarn.lock ├── Controllers │ └── SampleDataController.cs ├── Pages │ ├── Error.cshtml │ ├── Error.cshtml.cs │ └── _ViewImports.cshtml ├── Program.cs ├── Properties │ └── launchSettings.json ├── Startup.cs ├── appsettings.Development.json ├── appsettings.json └── wwwroot │ ├── favicon.ico │ └── silent-renew.html ├── README.md ├── ResourceApi ├── .gitignore ├── Controllers │ ├── IdentityController.cs │ ├── SampleDataController.cs │ └── ValuesController.cs ├── Program.cs ├── Properties │ └── launchSettings.json ├── ResourceApi.csproj ├── ResourceApi.csproj.user ├── Startup.cs ├── appsettings.Development.json ├── appsettings.json ├── bin │ └── Debug │ │ └── netcoreapp2.0 │ │ ├── ResourceApi.deps.json │ │ ├── ResourceApi.dll │ │ ├── ResourceApi.pdb │ │ ├── ResourceApi.runtimeconfig.dev.json │ │ └── ResourceApi.runtimeconfig.json └── obj │ ├── Debug │ └── netcoreapp2.0 │ │ ├── ResourceApi.AssemblyInfo.cs │ │ ├── ResourceApi.AssemblyInfoInputs.cache │ │ ├── ResourceApi.assets.cache │ │ ├── ResourceApi.csproj.CoreCompileInputs.cache │ │ ├── ResourceApi.csproj.FileListAbsolute.txt │ │ ├── ResourceApi.csprojAssemblyReference.cache │ │ ├── ResourceApi.dll │ │ └── ResourceApi.pdb │ ├── ResourceApi.csproj.nuget.cache │ ├── ResourceApi.csproj.nuget.dgspec.json │ ├── ResourceApi.csproj.nuget.g.props │ ├── ResourceApi.csproj.nuget.g.targets │ └── project.assets.json ├── Screenshots └── calling-identity.PNG └── oidc-angular-identityserver.sln /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # This .gitignore file was automatically created by Microsoft(R) Visual Studio. 3 | ################################################################################ 4 | 5 | /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/node_modules 6 | /Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/v16 7 | /Solution 6 - OIDC and Angular client/.vs/ -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "build", 6 | "command": "dotnet", 7 | "type": "process", 8 | "args": [ 9 | "build", 10 | "${workspaceFolder}/Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/AuthorizationServer.csproj" 11 | ], 12 | "problemMatcher": "$msCompile" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/.vs/oidc-angular-identityserver/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/.vs/oidc-angular-identityserver/v15/.suo -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/AuthorizationServer.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.0 5 | ..\docker-compose.dcproj 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/AuthorizationServer.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ProjectDebugger 5 | 6 | 7 | AuthorizationServer 8 | 9 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.pdb -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\chris\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\chris\\.nuget\\packages", 6 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/AuthorizationServer.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "hw3nbCqdDhsVPhfQdlTHAQRuw6UA7V+MaqWsBm9TM/CU6H2V19yViyklAMUgqtWU3VUyB2b5I+yWtinxn2aO1A==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 03d8905e47f9ffeb7fe6a21a40df8595cd917dfe 2 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | f7aad9260479ca75342885ab504f6a71635a2f8d 2 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.pdb -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Docker/AppType.cache: -------------------------------------------------------------------------------- 1 | AspNetCore -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Docker/CanonicalServiceName.cache: -------------------------------------------------------------------------------- 1 | authorizationserver -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Docker/ProjectReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Docker/ProjectReferences.cache -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Docker/RelativeOutputAssemblyPath.Fast.cache: -------------------------------------------------------------------------------- 1 | bin\Debug\netcoreapp2.0\AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Docker/RelativeOutputAssemblyPath.Regular.cache: -------------------------------------------------------------------------------- 1 | AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/AuthorizationServer/obj/Docker/TargetFramework.cache: -------------------------------------------------------------------------------- 1 | DotNetCore -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/ClientApp/app/app.server.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { ServerModule } from '@angular/platform-server'; 3 | import { AppModuleShared } from './app.shared.module'; 4 | import { AppComponent } from './components/app/app.component'; 5 | 6 | @NgModule({ 7 | bootstrap: [ AppComponent ], 8 | imports: [ 9 | ServerModule, 10 | AppModuleShared 11 | ] 12 | }) 13 | export class AppModule { 14 | } 15 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/ClientApp/app/components/app/app.component.css: -------------------------------------------------------------------------------- 1 | @media (max-width: 767px) { 2 | /* On small screens, the nav menu spans the full width of the screen. Leave a space for it. */ 3 | .body-content { 4 | padding-top: 50px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/ClientApp/app/components/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 | 8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/ClientApp/app/components/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | } 10 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/ClientApp/app/components/counter/counter.component.html: -------------------------------------------------------------------------------- 1 |

Counter

2 | 3 |

This is a simple example of an Angular component.

4 | 5 |

Current count: {{ currentCount }}

6 | 7 | 8 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/ClientApp/app/components/counter/counter.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'counter', 5 | templateUrl: './counter.component.html' 6 | }) 7 | export class CounterComponent { 8 | public currentCount = 0; 9 | 10 | public incrementCounter() { 11 | this.currentCount++; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/ClientApp/app/components/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'home', 5 | templateUrl: './home.component.html' 6 | }) 7 | export class HomeComponent { 8 | } 9 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/ClientApp/app/components/navmenu/navmenu.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nav-menu', 5 | templateUrl: './navmenu.component.html', 6 | styleUrls: ['./navmenu.component.css'] 7 | }) 8 | export class NavMenuComponent { 9 | } 10 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Home Page"; 3 | } 4 | 5 | Loading... 6 | 7 | 8 | @section scripts { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @ViewData["Title"] - ClientApp 7 | 8 | 9 | 10 | 11 | 12 | @RenderBody() 13 | 14 | @RenderSection("scripts", required: false) 15 | 16 | 17 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using ClientApp 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | @addTagHelper *, Microsoft.AspNetCore.SpaServices 4 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ClientApp/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/ClientApp/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/README.md: -------------------------------------------------------------------------------- 1 | # Setting up the OIDC system with IdentityServer4, MVC client and ASP.NET API using client credentials 2 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/Controllers/IdentityController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using Microsoft.AspNetCore.Authorization; 4 | using Microsoft.AspNetCore.Mvc; 5 | 6 | namespace ResourceApi.Controllers 7 | { 8 | [Route("[controller]")] 9 | [Authorize] 10 | public class IdentityController : ControllerBase 11 | { 12 | [HttpGet] 13 | public IActionResult Get() 14 | { 15 | return new JsonResult(from c in User.Claims select new { c.Type, c.Value }); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\chris\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\chris\\.nuget\\packages", 6 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | e740417de511f9b7d92a07f01beb8b5792cf12b8 2 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.assets.cache -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 2226bd249317e91a5e5e67027bdecf0455b58e38 2 | -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/ResourceApi/obj/ResourceApi.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "YvkwX/tUPgi1WP6H9aVT6UNqhinSLMBY0elIksVPLNvf7ytbtDpJaL2LDrV5YlUSrQiJdzHUzW5bzqRoRCaEyw==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 1 - Setup OIDC system with client credentials/Screenshots/calling-identity.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 1 - Setup OIDC system with client credentials/Screenshots/calling-identity.PNG -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/.vs/oidc-angular-identityserver/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/.vs/oidc-angular-identityserver/v15/.suo -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/AuthorizationServer.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ProjectDebugger 5 | 6 | 7 | AuthorizationServer 8 | 9 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/Quickstart/Account/ExternalProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class ExternalProvider 8 | { 9 | public string DisplayName { get; set; } 10 | public string AuthenticationScheme { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/Quickstart/Account/LogoutInputModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutInputModel 8 | { 9 | public string LogoutId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/Quickstart/Account/LogoutViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutViewModel : LogoutInputModel 8 | { 9 | public bool ShowLogoutPrompt { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/Quickstart/Home/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | using IdentityServer4.Models; 6 | 7 | namespace IdentityServer4.Quickstart.UI 8 | { 9 | public class ErrorViewModel 10 | { 11 | public ErrorMessage Error { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/Views/Shared/_ValidationSummary.cshtml: -------------------------------------------------------------------------------- 1 | @if (ViewContext.ModelState.IsValid == false) 2 | { 3 |
4 | Error 5 |
6 |
7 | } -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using IdentityServer4.Quickstart.UI 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.pdb -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\chris\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\chris\\.nuget\\packages", 6 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/AuthorizationServer.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "/y8r4Jjg8bLixGBZvbYgRHbZE92jBVJttOnDIM/wttv2D5mFFE/yrm0M4h2erwvyo9nNiDjI4S5fZ1GX5ATfVA==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 03d8905e47f9ffeb7fe6a21a40df8595cd917dfe 2 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | e1c79c5ad7f1ff4e34a5adc6c872e48d21564ce6 2 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.pdb -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Docker/AppType.cache: -------------------------------------------------------------------------------- 1 | AspNetCore -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Docker/CanonicalServiceName.cache: -------------------------------------------------------------------------------- 1 | authorizationserver -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Docker/ProjectReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Docker/ProjectReferences.cache -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Docker/RelativeOutputAssemblyPath.Fast.cache: -------------------------------------------------------------------------------- 1 | bin\Debug\netcoreapp2.0\AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Docker/RelativeOutputAssemblyPath.Regular.cache: -------------------------------------------------------------------------------- 1 | AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/obj/Docker/TargetFramework.cache: -------------------------------------------------------------------------------- 1 | DotNetCore -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/icon.jpg -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/icon.png -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/js/signout-redirect.js: -------------------------------------------------------------------------------- 1 | window.addEventListener("load", function () { 2 | var a = document.querySelector("a.PostLogoutRedirectUri"); 3 | if (a) { 4 | window.location = a.href; 5 | } 6 | }); 7 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/ClientApp/app/app.server.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { ServerModule } from '@angular/platform-server'; 3 | import { AppModuleShared } from './app.shared.module'; 4 | import { AppComponent } from './components/app/app.component'; 5 | 6 | @NgModule({ 7 | bootstrap: [ AppComponent ], 8 | imports: [ 9 | ServerModule, 10 | AppModuleShared 11 | ] 12 | }) 13 | export class AppModule { 14 | } 15 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/ClientApp/app/components/app/app.component.css: -------------------------------------------------------------------------------- 1 | @media (max-width: 767px) { 2 | /* On small screens, the nav menu spans the full width of the screen. Leave a space for it. */ 3 | .body-content { 4 | padding-top: 50px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/ClientApp/app/components/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 | 8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/ClientApp/app/components/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | } 10 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/ClientApp/app/components/counter/counter.component.html: -------------------------------------------------------------------------------- 1 |

Counter

2 | 3 |

This is a simple example of an Angular component.

4 | 5 |

Current count: {{ currentCount }}

6 | 7 | 8 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/ClientApp/app/components/counter/counter.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'counter', 5 | templateUrl: './counter.component.html' 6 | }) 7 | export class CounterComponent { 8 | public currentCount = 0; 9 | 10 | public incrementCounter() { 11 | this.currentCount++; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/ClientApp/app/components/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'home', 5 | templateUrl: './home.component.html' 6 | }) 7 | export class HomeComponent { 8 | } 9 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/ClientApp/app/components/navmenu/navmenu.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nav-menu', 5 | templateUrl: './navmenu.component.html', 6 | styleUrls: ['./navmenu.component.css'] 7 | }) 8 | export class NavMenuComponent { 9 | } 10 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/Models/UserClaimsVM.cs: -------------------------------------------------------------------------------- 1 | namespace ClientApp.Models 2 | { 3 | public class UserClaimsVM 4 | { 5 | public string UserClaimsWithClientCredentials { get; set; } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Home Page"; 3 | } 4 | 5 | Loading... 6 | 7 | 8 | @section scripts { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @ViewData["Title"] - ClientApp 7 | 8 | 9 | 10 | 11 | 12 | @RenderBody() 13 | 14 | @RenderSection("scripts", required: false) 15 | 16 | 17 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using ClientApp 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | @addTagHelper *, Microsoft.AspNetCore.SpaServices 4 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/ClientApp/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/README.md: -------------------------------------------------------------------------------- 1 | # OIDC setup with interactive login 2 | Adding interactive login to our app and using authorization code flow with a mvc client. 3 | 4 | Authorization server: 5 | Added new client with authorization code grant and identity resources. 6 | 7 | Client: 8 | Setup authentication with OIDC middleware and cookies 9 | Created IdentityController for displaying user claims for authorized users 10 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/Controllers/IdentityController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using Microsoft.AspNetCore.Authorization; 4 | using Microsoft.AspNetCore.Mvc; 5 | 6 | namespace ResourceApi.Controllers 7 | { 8 | [Route("api/[controller]")] 9 | [Authorize] 10 | public class IdentityController : ControllerBase 11 | { 12 | [HttpGet] 13 | public IActionResult Get() 14 | { 15 | return new JsonResult(from c in User.Claims select new { c.Type, c.Value }); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\chris\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\chris\\.nuget\\packages", 6 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | e740417de511f9b7d92a07f01beb8b5792cf12b8 2 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | bc23f8f2ed45b0205427fe385e5685d636f72531 2 | -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/ResourceApi/obj/ResourceApi.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "S3Q7VL7LQ2BqPOidRfh9gUnlxAU0M1xjRd4dQAk9oRjduR8Y/j5YAy54dKNVgNhEm4Ql1JER8S8+YCO65LU8cg==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/Screenshots/calling-identity.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/Screenshots/calling-identity.PNG -------------------------------------------------------------------------------- /Solution 2 - OIDC with interactive login and authentication code flow/Screenshots/identity-view-authcode.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 2 - OIDC with interactive login and authentication code flow/Screenshots/identity-view-authcode.PNG -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/.vs/oidc-angular-identityserver/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/.vs/oidc-angular-identityserver/v15/.suo -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/AuthorizationServer.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.0 5 | ..\docker-compose.dcproj 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/AuthorizationServer.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ProjectDebugger 5 | 6 | 7 | AuthorizationServer 8 | 9 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace AuthorizationServer 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | BuildWebHost(args).Run(); 11 | } 12 | 13 | public static IWebHost BuildWebHost(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup() 16 | .Build(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/Quickstart/Account/ExternalProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class ExternalProvider 8 | { 9 | public string DisplayName { get; set; } 10 | public string AuthenticationScheme { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/Quickstart/Account/LogoutInputModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutInputModel 8 | { 9 | public string LogoutId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/Quickstart/Account/LogoutViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutViewModel : LogoutInputModel 8 | { 9 | public bool ShowLogoutPrompt { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/Quickstart/Home/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | using IdentityServer4.Models; 6 | 7 | namespace IdentityServer4.Quickstart.UI 8 | { 9 | public class ErrorViewModel 10 | { 11 | public ErrorMessage Error { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/Views/Shared/_ValidationSummary.cshtml: -------------------------------------------------------------------------------- 1 | @if (ViewContext.ModelState.IsValid == false) 2 | { 3 |
4 | Error 5 |
6 |
7 | } -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using IdentityServer4.Quickstart.UI 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.pdb -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\chris\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\chris\\.nuget\\packages", 6 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/AuthorizationServer.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "X3bj5eGPpdLxAYYeuru3e1Q4SJJkVUUAnnpPEmPgpqBo6tieOlFA8vzGvD4cP6P2qjn/Mjpsz3Bxe6Vr7tJMWA==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 03d8905e47f9ffeb7fe6a21a40df8595cd917dfe 2 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | e1c79c5ad7f1ff4e34a5adc6c872e48d21564ce6 2 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.pdb -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Docker/AppType.cache: -------------------------------------------------------------------------------- 1 | AspNetCore -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Docker/CanonicalServiceName.cache: -------------------------------------------------------------------------------- 1 | authorizationserver -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Docker/ProjectReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Docker/ProjectReferences.cache -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Docker/RelativeOutputAssemblyPath.Fast.cache: -------------------------------------------------------------------------------- 1 | bin\Debug\netcoreapp2.0\AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Docker/RelativeOutputAssemblyPath.Regular.cache: -------------------------------------------------------------------------------- 1 | AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/obj/Docker/TargetFramework.cache: -------------------------------------------------------------------------------- 1 | DotNetCore -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/icon.jpg -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/icon.png -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/js/signout-redirect.js: -------------------------------------------------------------------------------- 1 | window.addEventListener("load", function () { 2 | var a = document.querySelector("a.PostLogoutRedirectUri"); 3 | if (a) { 4 | window.location = a.href; 5 | } 6 | }); 7 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/ClientApp/app/app.server.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { ServerModule } from '@angular/platform-server'; 3 | import { AppModuleShared } from './app.shared.module'; 4 | import { AppComponent } from './components/app/app.component'; 5 | 6 | @NgModule({ 7 | bootstrap: [ AppComponent ], 8 | imports: [ 9 | ServerModule, 10 | AppModuleShared 11 | ] 12 | }) 13 | export class AppModule { 14 | } 15 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/ClientApp/app/components/app/app.component.css: -------------------------------------------------------------------------------- 1 | @media (max-width: 767px) { 2 | /* On small screens, the nav menu spans the full width of the screen. Leave a space for it. */ 3 | .body-content { 4 | padding-top: 50px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/ClientApp/app/components/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 | 8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/ClientApp/app/components/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | } 10 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/ClientApp/app/components/counter/counter.component.html: -------------------------------------------------------------------------------- 1 |

Counter

2 | 3 |

This is a simple example of an Angular component.

4 | 5 |

Current count: {{ currentCount }}

6 | 7 | 8 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/ClientApp/app/components/counter/counter.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'counter', 5 | templateUrl: './counter.component.html' 6 | }) 7 | export class CounterComponent { 8 | public currentCount = 0; 9 | 10 | public incrementCounter() { 11 | this.currentCount++; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/ClientApp/app/components/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'home', 5 | templateUrl: './home.component.html' 6 | }) 7 | export class HomeComponent { 8 | } 9 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/ClientApp/app/components/navmenu/navmenu.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nav-menu', 5 | templateUrl: './navmenu.component.html', 6 | styleUrls: ['./navmenu.component.css'] 7 | }) 8 | export class NavMenuComponent { 9 | } 10 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/Models/UserClaimsVM.cs: -------------------------------------------------------------------------------- 1 | namespace ClientApp.Models 2 | { 3 | public class UserClaimsVM 4 | { 5 | public string UserClaimsWithClientCredentials { get; set; } 6 | public string UserClaimsWithAccessToken { get; set; } 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Home Page"; 3 | } 4 | 5 | Loading... 6 | 7 | 8 | @section scripts { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @ViewData["Title"] - ClientApp 7 | 8 | 9 | 10 | 11 | 12 | @RenderBody() 13 | 14 | @RenderSection("scripts", required: false) 15 | 16 | 17 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using ClientApp 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | @addTagHelper *, Microsoft.AspNetCore.SpaServices 4 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ClientApp/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/ClientApp/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/Controllers/IdentityController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using Microsoft.AspNetCore.Authorization; 4 | using Microsoft.AspNetCore.Mvc; 5 | 6 | namespace ResourceApi.Controllers 7 | { 8 | [Route("api/[controller]")] 9 | [Authorize] 10 | public class IdentityController : ControllerBase 11 | { 12 | [HttpGet] 13 | public IActionResult Get() 14 | { 15 | return new JsonResult(from c in User.Claims select new { c.Type, c.Value }); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace ResourceApi 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | BuildWebHost(args).Run(); 11 | } 12 | 13 | public static IWebHost BuildWebHost(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup() 16 | .Build(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\chris\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\chris\\.nuget\\packages", 6 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | e740417de511f9b7d92a07f01beb8b5792cf12b8 2 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | bc23f8f2ed45b0205427fe385e5685d636f72531 2 | -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/ResourceApi/obj/ResourceApi.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "ihkrUT9viaWeN43If/hSIDxdHB8zjjWVGdYtZAptS91A72GNkuFsPjA/XQw4s30PN4PJXS1NyLeNpdjamwqopQ==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 3 - OIDC with Hybrid flow and call api/Screenshots/calling-identity.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 3 - OIDC with Hybrid flow and call api/Screenshots/calling-identity.PNG -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/.vs/oidc-angular-identityserver/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/.vs/oidc-angular-identityserver/v15/.suo -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/AuthorizationServer.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ProjectDebugger 5 | 6 | 7 | AuthorizationServer 8 | true 9 | 10 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Data/ApplicationUser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Identity; 6 | 7 | namespace AuthorizationServer.Data 8 | { 9 | // Add profile data for application users by adding properties to the ApplicationUser class 10 | public class ApplicationUser : IdentityUser 11 | { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/About.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model AboutModel 3 | @{ 4 | ViewData["Title"] = "About"; 5 | } 6 |

@ViewData["Title"]

7 |

@Model.Message

8 | 9 |

Use this area to provide additional information.

10 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/About.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages 8 | { 9 | public class AboutModel : PageModel 10 | { 11 | public string Message { get; set; } 12 | 13 | public void OnGet() 14 | { 15 | Message = "Your application description page."; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/AccessDenied.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model AccessDeniedModel 3 | @{ 4 | ViewData["Title"] = "Access denied"; 5 | } 6 | 7 |
8 |

@ViewData["Title"]

9 |

You do not have access to this resource.

10 |
11 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/AccessDenied.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class AccessDeniedModel : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/ConfirmEmail.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ConfirmEmailModel 3 | @{ 4 | ViewData["Title"] = "Confirm email"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |
9 |

10 | Thank you for confirming your email. 11 |

12 |
13 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/ForgotPasswordConfirmation.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ForgotPasswordConfirmation 3 | @{ 4 | ViewData["Title"] = "Forgot password confirmation"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |

9 | Please check your email to reset your password. 10 |

11 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/ForgotPasswordConfirmation.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class ForgotPasswordConfirmation : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/Lockout.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model LockoutModel 3 | @{ 4 | ViewData["Title"] = "Locked out"; 5 | } 6 | 7 |
8 |

@ViewData["Title"]

9 |

This account has been locked out, please try again later.

10 |
11 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/Lockout.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class LockoutModel : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/Manage/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "/Pages/_Layout.cshtml"; 3 | } 4 | 5 |

Manage your account

6 | 7 |
8 |

Change your account settings

9 |
10 |
11 |
12 | @await Html.PartialAsync("_ManageNav") 13 |
14 |
15 | @RenderBody() 16 |
17 |
18 |
19 | 20 | @section Scripts { 21 | @RenderSection("Scripts", required: false) 22 | } 23 | 24 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/Manage/_StatusMessage.cshtml: -------------------------------------------------------------------------------- 1 | @model string 2 | 3 | @if (!String.IsNullOrEmpty(Model)) 4 | { 5 | var statusMessageClass = Model.StartsWith("Error") ? "danger" : "success"; 6 | 10 | } 11 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/Manage/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using AuthorizationServer.Pages.Account.Manage 2 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/ResetPasswordConfirmation.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ResetPasswordConfirmationModel 3 | @{ 4 | ViewData["Title"] = "Reset password confirmation"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |

9 | Your password has been reset. Please click here to log in. 10 |

11 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/ResetPasswordConfirmation.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class ResetPasswordConfirmationModel : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/SignedOut.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model SignedOutModel 3 | @{ 4 | ViewData["Title"] = "Signed out"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |

9 | You have successfully signed out. 10 |

11 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/SignedOut.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Microsoft.AspNetCore.Mvc.RazorPages; 7 | 8 | public class SignedOutModel : PageModel 9 | { 10 | public IActionResult OnGet() 11 | { 12 | if (User.Identity.IsAuthenticated) 13 | { 14 | // Redirect to home page if the user is authenticated. 15 | return RedirectToPage("/Index"); 16 | } 17 | 18 | return Page(); 19 | } 20 | } -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Account/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using AuthorizationServer.Pages.Account 2 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Contact.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ContactModel 3 | @{ 4 | ViewData["Title"] = "Contact"; 5 | } 6 |

@ViewData["Title"]

7 |

@Model.Message

8 | 9 |
10 | One Microsoft Way
11 | Redmond, WA 98052-6399
12 | P: 13 | 425.555.0100 14 |
15 | 16 |
17 | Support: Support@example.com
18 | Marketing: Marketing@example.com 19 |
20 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Contact.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages 8 | { 9 | public class ContactModel : PageModel 10 | { 11 | public string Message { get; set; } 12 | 13 | public void OnGet() 14 | { 15 | Message = "Your contact page."; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/Index.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Microsoft.AspNetCore.Mvc.RazorPages; 7 | 8 | namespace AuthorizationServer.Pages 9 | { 10 | public class IndexModel : PageModel 11 | { 12 | public void OnGet() 13 | { 14 | 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Identity 2 | @using AuthorizationServer 3 | @using AuthorizationServer.Data 4 | @namespace AuthorizationServer.Pages 5 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 6 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Pages/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Quickstart/Account/ExternalProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class ExternalProvider 8 | { 9 | public string DisplayName { get; set; } 10 | public string AuthenticationScheme { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Quickstart/Account/LogoutInputModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutInputModel 8 | { 9 | public string LogoutId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Quickstart/Account/LogoutViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutViewModel : LogoutInputModel 8 | { 9 | public bool ShowLogoutPrompt { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Quickstart/Home/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | using IdentityServer4.Models; 6 | 7 | namespace IdentityServer4.Quickstart.UI 8 | { 9 | public class ErrorViewModel 10 | { 11 | public ErrorMessage Error { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Services/IEmailSender.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace AuthorizationServer.Services 7 | { 8 | public interface IEmailSender 9 | { 10 | Task SendEmailAsync(string email, string subject, string message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Views/Shared/_ValidationSummary.cshtml: -------------------------------------------------------------------------------- 1 | @if (ViewContext.ModelState.IsValid == false) 2 | { 3 |
4 | Error 5 |
6 |
7 | } -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using IdentityServer4.Quickstart.UI 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-AuthorizationServer-53bc9b9d-9d6a-45d4-8429-2a2761773502;Trusted_Connection=True;MultipleActiveResultSets=true" 4 | }, 5 | "Logging": { 6 | "IncludeScopes": false, 7 | "LogLevel": { 8 | "Default": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.pdb -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\chris\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\chris\\.nuget\\packages", 6 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/obj/AuthorizationServer.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "KDWt9E2UgNainAaj2W8VOk1w/7l2G3v82HaMnfiBM23gcUCdrB+BwWHJvk16KMOwMyxkxovEImx5pbbPBsH+LQ==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 03d8905e47f9ffeb7fe6a21a40df8595cd917dfe 2 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 7b8e7e5ae07618d570f30b24c57185dd2f0e9c1c 2 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.pdb -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/icon.jpg -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/icon.png -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/js/signout-redirect.js: -------------------------------------------------------------------------------- 1 | window.addEventListener("load", function () { 2 | var a = document.querySelector("a.PostLogoutRedirectUri"); 3 | if (a) { 4 | window.location = a.href; 5 | } 6 | }); 7 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/ClientApp/app/app.server.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { ServerModule } from '@angular/platform-server'; 3 | import { AppModuleShared } from './app.shared.module'; 4 | import { AppComponent } from './components/app/app.component'; 5 | 6 | @NgModule({ 7 | bootstrap: [ AppComponent ], 8 | imports: [ 9 | ServerModule, 10 | AppModuleShared 11 | ] 12 | }) 13 | export class AppModule { 14 | } 15 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/ClientApp/app/components/app/app.component.css: -------------------------------------------------------------------------------- 1 | @media (max-width: 767px) { 2 | /* On small screens, the nav menu spans the full width of the screen. Leave a space for it. */ 3 | .body-content { 4 | padding-top: 50px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/ClientApp/app/components/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 | 8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/ClientApp/app/components/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | } 10 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/ClientApp/app/components/counter/counter.component.html: -------------------------------------------------------------------------------- 1 |

Counter

2 | 3 |

This is a simple example of an Angular component.

4 | 5 |

Current count: {{ currentCount }}

6 | 7 | 8 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/ClientApp/app/components/counter/counter.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'counter', 5 | templateUrl: './counter.component.html' 6 | }) 7 | export class CounterComponent { 8 | public currentCount = 0; 9 | 10 | public incrementCounter() { 11 | this.currentCount++; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/ClientApp/app/components/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'home', 5 | templateUrl: './home.component.html' 6 | }) 7 | export class HomeComponent { 8 | } 9 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/ClientApp/app/components/navmenu/navmenu.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nav-menu', 5 | templateUrl: './navmenu.component.html', 6 | styleUrls: ['./navmenu.component.css'] 7 | }) 8 | export class NavMenuComponent { 9 | } 10 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/Models/UserClaimsVM.cs: -------------------------------------------------------------------------------- 1 | namespace ClientApp.Models 2 | { 3 | public class UserClaimsVM 4 | { 5 | public string UserClaimsWithClientCredentials { get; set; } 6 | public string UserClaimsWithAccessToken { get; set; } 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Home Page"; 3 | } 4 | 5 | Loading... 6 | 7 | 8 | @section scripts { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @ViewData["Title"] - ClientApp 7 | 8 | 9 | 10 | 11 | 12 | @RenderBody() 13 | 14 | @RenderSection("scripts", required: false) 15 | 16 | 17 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using ClientApp 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | @addTagHelper *, Microsoft.AspNetCore.SpaServices 4 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ClientApp/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/ClientApp/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/README.md: -------------------------------------------------------------------------------- 1 | # OIDC with ASP.NET Identity 2 | 3 | Adding the ASP.NET identity to the Identity server and making it use this data instead of the hardcoded test users. -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/Controllers/IdentityController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using Microsoft.AspNetCore.Authorization; 4 | using Microsoft.AspNetCore.Mvc; 5 | 6 | namespace ResourceApi.Controllers 7 | { 8 | [Route("api/[controller]")] 9 | [Authorize] 10 | public class IdentityController : ControllerBase 11 | { 12 | [HttpGet] 13 | public IActionResult Get() 14 | { 15 | return new JsonResult(from c in User.Claims select new { c.Type, c.Value }); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace ResourceApi 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | BuildWebHost(args).Run(); 11 | } 12 | 13 | public static IWebHost BuildWebHost(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup() 16 | .Build(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\chris\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\chris\\.nuget\\packages", 6 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | e740417de511f9b7d92a07f01beb8b5792cf12b8 2 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | bc23f8f2ed45b0205427fe385e5685d636f72531 2 | -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/ResourceApi/obj/ResourceApi.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "rqKUhdz45gIlVoW+zz7QAadRtse4ogPRngsqPtSmLhNGK06Bl/6/fxARrZP3UO+juruAGHkGdioWY1GI9DrK1w==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 4 - OIDC with Identity/Screenshots/calling-identity.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 4 - OIDC with Identity/Screenshots/calling-identity.PNG -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/DesignTimeBuild/.dtbcache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/DesignTimeBuild/.dtbcache -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v15/.suo -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v16/.suo -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v16/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v16/Server/sqlite3/db.lock -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v16/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/.vs/oidc-angular-identityserver/v16/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/AuthorizationServer.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ProjectDebugger 5 | 6 | 7 | AuthorizationServer 8 | true 9 | 10 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Data/ApplicationUser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Identity; 6 | 7 | namespace AuthorizationServer.Data 8 | { 9 | // Add profile data for application users by adding properties to the ApplicationUser class 10 | public class ApplicationUser : IdentityUser 11 | { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/About.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model AboutModel 3 | @{ 4 | ViewData["Title"] = "About"; 5 | } 6 |

@ViewData["Title"]

7 |

@Model.Message

8 | 9 |

Use this area to provide additional information.

10 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/About.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages 8 | { 9 | public class AboutModel : PageModel 10 | { 11 | public string Message { get; set; } 12 | 13 | public void OnGet() 14 | { 15 | Message = "Your application description page."; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/AccessDenied.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model AccessDeniedModel 3 | @{ 4 | ViewData["Title"] = "Access denied"; 5 | } 6 | 7 |
8 |

@ViewData["Title"]

9 |

You do not have access to this resource.

10 |
11 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/AccessDenied.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class AccessDeniedModel : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/ConfirmEmail.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ConfirmEmailModel 3 | @{ 4 | ViewData["Title"] = "Confirm email"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |
9 |

10 | Thank you for confirming your email. 11 |

12 |
13 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/ForgotPasswordConfirmation.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ForgotPasswordConfirmation 3 | @{ 4 | ViewData["Title"] = "Forgot password confirmation"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |

9 | Please check your email to reset your password. 10 |

11 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/ForgotPasswordConfirmation.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class ForgotPasswordConfirmation : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/Lockout.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model LockoutModel 3 | @{ 4 | ViewData["Title"] = "Locked out"; 5 | } 6 | 7 |
8 |

@ViewData["Title"]

9 |

This account has been locked out, please try again later.

10 |
11 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/Lockout.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class LockoutModel : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/Manage/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "/Pages/_Layout.cshtml"; 3 | } 4 | 5 |

Manage your account

6 | 7 |
8 |

Change your account settings

9 |
10 |
11 |
12 | @await Html.PartialAsync("_ManageNav") 13 |
14 |
15 | @RenderBody() 16 |
17 |
18 |
19 | 20 | @section Scripts { 21 | @RenderSection("Scripts", required: false) 22 | } 23 | 24 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/Manage/_StatusMessage.cshtml: -------------------------------------------------------------------------------- 1 | @model string 2 | 3 | @if (!String.IsNullOrEmpty(Model)) 4 | { 5 | var statusMessageClass = Model.StartsWith("Error") ? "danger" : "success"; 6 | 10 | } 11 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/Manage/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using AuthorizationServer.Pages.Account.Manage 2 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/ResetPasswordConfirmation.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ResetPasswordConfirmationModel 3 | @{ 4 | ViewData["Title"] = "Reset password confirmation"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |

9 | Your password has been reset. Please click here to log in. 10 |

11 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/ResetPasswordConfirmation.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class ResetPasswordConfirmationModel : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/SignedOut.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model SignedOutModel 3 | @{ 4 | ViewData["Title"] = "Signed out"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |

9 | You have successfully signed out. 10 |

11 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Account/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using AuthorizationServer.Pages.Account 2 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Contact.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages 8 | { 9 | public class ContactModel : PageModel 10 | { 11 | public string Message { get; set; } 12 | 13 | public void OnGet() 14 | { 15 | Message = "Your contact page."; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/Index.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Microsoft.AspNetCore.Mvc.RazorPages; 7 | 8 | namespace AuthorizationServer.Pages 9 | { 10 | public class IndexModel : PageModel 11 | { 12 | public void OnGet() 13 | { 14 | 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Identity 2 | @using AuthorizationServer 3 | @using AuthorizationServer.Data 4 | @namespace AuthorizationServer.Pages 5 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 6 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Pages/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Quickstart/Account/ExternalProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class ExternalProvider 8 | { 9 | public string DisplayName { get; set; } 10 | public string AuthenticationScheme { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Quickstart/Account/LogoutInputModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutInputModel 8 | { 9 | public string LogoutId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Quickstart/Account/LogoutViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutViewModel : LogoutInputModel 8 | { 9 | public bool ShowLogoutPrompt { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Quickstart/Home/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | using IdentityServer4.Models; 6 | 7 | namespace IdentityServer4.Quickstart.UI 8 | { 9 | public class ErrorViewModel 10 | { 11 | public ErrorMessage Error { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Services/IEmailSender.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace AuthorizationServer.Services 7 | { 8 | public interface IEmailSender 9 | { 10 | Task SendEmailAsync(string email, string subject, string message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Views/Shared/_ValidationSummary.cshtml: -------------------------------------------------------------------------------- 1 | @if (ViewContext.ModelState.IsValid == false) 2 | { 3 |
4 | Error 5 |
6 |
7 | } -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using IdentityServer4.Quickstart.UI 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-AuthorizationServer-53bc9b9d-9d6a-45d4-8429-2a2761773502;Trusted_Connection=True;MultipleActiveResultSets=true" 4 | }, 5 | "Logging": { 6 | "IncludeScopes": false, 7 | "LogLevel": { 8 | "Default": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.pdb -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\chris\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\chris\\.nuget\\packages", 6 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/bin/Debug/netcoreapp2.0/AuthorizationServer.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/obj/AuthorizationServer.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "TqAEqYUlFktkXqu/a9UwyrtVJORG6HBiQVSz2t+6QysfeaW0qIKjlwYEHZKbufXEE988rwdd3m8l4QH+60Cqkw==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 03d8905e47f9ffeb7fe6a21a40df8595cd917dfe 2 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.assets.cache -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 334c65c20e0976531d9e796cc234c539ecfdac9c 2 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.dll -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.pdb -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/icon.jpg -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/icon.png -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/js/signout-redirect.js: -------------------------------------------------------------------------------- 1 | window.addEventListener("load", function () { 2 | var a = document.querySelector("a.PostLogoutRedirectUri"); 3 | if (a) { 4 | window.location = a.href; 5 | } 6 | }); 7 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/ClientApp/app/app.server.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { ServerModule } from '@angular/platform-server'; 3 | import { AppModuleShared } from './app.shared.module'; 4 | import { AppComponent } from './components/app/app.component'; 5 | 6 | @NgModule({ 7 | bootstrap: [ AppComponent ], 8 | imports: [ 9 | ServerModule, 10 | AppModuleShared 11 | ] 12 | }) 13 | export class AppModule { 14 | } 15 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/ClientApp/app/components/app/app.component.css: -------------------------------------------------------------------------------- 1 | @media (max-width: 767px) { 2 | /* On small screens, the nav menu spans the full width of the screen. Leave a space for it. */ 3 | .body-content { 4 | padding-top: 50px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/ClientApp/app/components/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 | 8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/ClientApp/app/components/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | } 10 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/ClientApp/app/components/counter/counter.component.html: -------------------------------------------------------------------------------- 1 |

Counter

2 | 3 |

This is a simple example of an Angular component.

4 | 5 |

Current count: {{ currentCount }}

6 | 7 | 8 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/ClientApp/app/components/counter/counter.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'counter', 5 | templateUrl: './counter.component.html' 6 | }) 7 | export class CounterComponent { 8 | public currentCount = 0; 9 | 10 | public incrementCounter() { 11 | this.currentCount++; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/ClientApp/app/components/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'home', 5 | templateUrl: './home.component.html' 6 | }) 7 | export class HomeComponent { 8 | } 9 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/ClientApp/app/components/navmenu/navmenu.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'nav-menu', 5 | templateUrl: './navmenu.component.html', 6 | styleUrls: ['./navmenu.component.css'] 7 | }) 8 | export class NavMenuComponent { 9 | } 10 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/Models/UserClaimsVM.cs: -------------------------------------------------------------------------------- 1 | namespace ClientApp.Models 2 | { 3 | public class UserClaimsVM 4 | { 5 | public string UserClaimsWithClientCredentials { get; set; } 6 | public string UserClaimsWithAccessToken { get; set; } 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Home Page"; 3 | } 4 | 5 | Loading... 6 | 7 | 8 | @section scripts { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @ViewData["Title"] - ClientApp 7 | 8 | 9 | 10 | 11 | 12 | @RenderBody() 13 | 14 | @RenderSection("scripts", required: false) 15 | 16 | 17 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using ClientApp 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | @addTagHelper *, Microsoft.AspNetCore.SpaServices 4 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ClientApp/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/ClientApp/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/README.md: -------------------------------------------------------------------------------- 1 | # OIDC with EF for configuration 2 | 3 | Adding our OIDC configuration to a MSSQL database for being able to change configurations dynamically. 4 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/Controllers/IdentityController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using Microsoft.AspNetCore.Authorization; 4 | using Microsoft.AspNetCore.Mvc; 5 | 6 | namespace ResourceApi.Controllers 7 | { 8 | [Route("api/[controller]")] 9 | [Authorize] 10 | public class IdentityController : ControllerBase 11 | { 12 | [HttpGet] 13 | public IActionResult Get() 14 | { 15 | return new JsonResult(from c in User.Claims select new { c.Type, c.Value }); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace ResourceApi 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | BuildWebHost(args).Run(); 11 | } 12 | 13 | public static IWebHost BuildWebHost(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup() 16 | .Build(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\chris\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\chris\\.nuget\\packages", 6 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | e740417de511f9b7d92a07f01beb8b5792cf12b8 2 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.assets.cache -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 2226bd249317e91a5e5e67027bdecf0455b58e38 2 | -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/ResourceApi/obj/ResourceApi.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "gEXjSTokTpOxJJHSD5fAQVH6sj8/Il4OpeuNPiJcDpLNgmN3i4BTaXJsY6rT/akGdXhQ+BjOE+WJQebmUAmofw==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 5 - OIDC with EF for configuration/Screenshots/calling-identity.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 5 - OIDC with EF for configuration/Screenshots/calling-identity.PNG -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/.DS_Store -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.gitignore: -------------------------------------------------------------------------------- 1 | .vs/ 2 | Debug/ 3 | bin/ 4 | obj/ 5 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/v15/.suo -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/v15/Server/sqlite3/db.lock -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide-shm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide-shm -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide-wal: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/v15/Server/sqlite3/storage.ide-wal -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/xs/UserPrefs.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/xs/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/xs/sqlite3/db.lock -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/xs/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/xs/sqlite3/storage.ide -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/xs/sqlite3/storage.ide-shm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/xs/sqlite3/storage.ide-shm -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/xs/sqlite3/storage.ide-wal: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/.vs/oidc-angular-identityserver/xs/sqlite3/storage.ide-wal -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | obj/ -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/AuthorizationServer.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ProjectDebugger 5 | 6 | 7 | AuthorizationServer 8 | true 9 | 10 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Data/ApplicationUser.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Identity; 6 | 7 | namespace AuthorizationServer.Data 8 | { 9 | // Add profile data for application users by adding properties to the ApplicationUser class 10 | public class ApplicationUser : IdentityUser 11 | { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/About.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model AboutModel 3 | @{ 4 | ViewData["Title"] = "About"; 5 | } 6 |

@ViewData["Title"]

7 |

@Model.Message

8 | 9 |

Use this area to provide additional information.

10 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/About.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages 8 | { 9 | public class AboutModel : PageModel 10 | { 11 | public string Message { get; set; } 12 | 13 | public void OnGet() 14 | { 15 | Message = "Your application description page."; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/AccessDenied.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model AccessDeniedModel 3 | @{ 4 | ViewData["Title"] = "Access denied"; 5 | } 6 | 7 |
8 |

@ViewData["Title"]

9 |

You do not have access to this resource.

10 |
11 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/AccessDenied.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class AccessDeniedModel : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/ConfirmEmail.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ConfirmEmailModel 3 | @{ 4 | ViewData["Title"] = "Confirm email"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |
9 |

10 | Thank you for confirming your email. 11 |

12 |
13 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/ForgotPasswordConfirmation.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ForgotPasswordConfirmation 3 | @{ 4 | ViewData["Title"] = "Forgot password confirmation"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |

9 | Please check your email to reset your password. 10 |

11 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/ForgotPasswordConfirmation.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class ForgotPasswordConfirmation : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/Lockout.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model LockoutModel 3 | @{ 4 | ViewData["Title"] = "Locked out"; 5 | } 6 | 7 |
8 |

@ViewData["Title"]

9 |

This account has been locked out, please try again later.

10 |
11 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/Lockout.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class LockoutModel : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/Manage/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "/Pages/_Layout.cshtml"; 3 | } 4 | 5 |

Manage your account

6 | 7 |
8 |

Change your account settings

9 |
10 |
11 |
12 | @await Html.PartialAsync("_ManageNav") 13 |
14 |
15 | @RenderBody() 16 |
17 |
18 |
19 | 20 | @section Scripts { 21 | @RenderSection("Scripts", required: false) 22 | } 23 | 24 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/Manage/_StatusMessage.cshtml: -------------------------------------------------------------------------------- 1 | @model string 2 | 3 | @if (!String.IsNullOrEmpty(Model)) 4 | { 5 | var statusMessageClass = Model.StartsWith("Error") ? "danger" : "success"; 6 | 10 | } 11 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/Manage/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using AuthorizationServer.Pages.Account.Manage 2 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/ResetPasswordConfirmation.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ResetPasswordConfirmationModel 3 | @{ 4 | ViewData["Title"] = "Reset password confirmation"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |

9 | Your password has been reset. Please click here to log in. 10 |

11 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/ResetPasswordConfirmation.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages.Account 8 | { 9 | public class ResetPasswordConfirmationModel : PageModel 10 | { 11 | public void OnGet() 12 | { 13 | 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/SignedOut.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model SignedOutModel 3 | @{ 4 | ViewData["Title"] = "Signed out"; 5 | } 6 | 7 |

@ViewData["Title"]

8 |

9 | You have successfully signed out. 10 |

11 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Account/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using AuthorizationServer.Pages.Account 2 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Contact.cshtml: -------------------------------------------------------------------------------- 1 | @page 2 | @model ContactModel 3 | @{ 4 | ViewData["Title"] = "Contact"; 5 | } 6 |

@ViewData["Title"]

7 |

@Model.Message

8 | 9 |
10 | One Microsoft Way
11 | Redmond, WA 98052-6399
12 | P: 13 | 425.555.0100 14 |
15 | 16 |
17 | Support: Support@example.com
18 | Marketing: Marketing@example.com 19 |
20 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Contact.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc.RazorPages; 6 | 7 | namespace AuthorizationServer.Pages 8 | { 9 | public class ContactModel : PageModel 10 | { 11 | public string Message { get; set; } 12 | 13 | public void OnGet() 14 | { 15 | Message = "Your contact page."; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/Index.cshtml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Microsoft.AspNetCore.Mvc.RazorPages; 7 | 8 | namespace AuthorizationServer.Pages 9 | { 10 | public class IndexModel : PageModel 11 | { 12 | public void OnGet() 13 | { 14 | 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNetCore.Identity 2 | @using AuthorizationServer 3 | @using AuthorizationServer.Data 4 | @namespace AuthorizationServer.Pages 5 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 6 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Pages/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Quickstart/Account/ExternalProvider.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class ExternalProvider 8 | { 9 | public string DisplayName { get; set; } 10 | public string AuthenticationScheme { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Quickstart/Account/LogoutInputModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutInputModel 8 | { 9 | public string LogoutId { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Quickstart/Account/LogoutViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | namespace IdentityServer4.Quickstart.UI 6 | { 7 | public class LogoutViewModel : LogoutInputModel 8 | { 9 | public bool ShowLogoutPrompt { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Quickstart/Home/ErrorViewModel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) Brock Allen & Dominick Baier. All rights reserved. 2 | // Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information. 3 | 4 | 5 | using IdentityServer4.Models; 6 | 7 | namespace IdentityServer4.Quickstart.UI 8 | { 9 | public class ErrorViewModel 10 | { 11 | public ErrorMessage Error { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Services/IEmailSender.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace AuthorizationServer.Services 7 | { 8 | public interface IEmailSender 9 | { 10 | Task SendEmailAsync(string email, string subject, string message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Views/Shared/_ValidationSummary.cshtml: -------------------------------------------------------------------------------- 1 | @if (ViewContext.ModelState.IsValid == false) 2 | { 3 |
4 | Error 5 |
6 |
7 | } -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using IdentityServer4.Quickstart.UI 2 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 3 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ConnectionStrings": { 3 | "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-AuthorizationServer-53bc9b9d-9d6a-45d4-8429-2a2761773502;Trusted_Connection=True;MultipleActiveResultSets=true" 4 | }, 5 | "Logging": { 6 | "IncludeScopes": false, 7 | "LogLevel": { 8 | "Default": "Warning" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/obj/AuthorizationServer.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "9036VPBMKaQ0D0YeKyvd4qH3Jxj7TnWXQAC3hF2r1GCoYvKWzEsk7oQXhmaGdC3OnV2CHVLoAo7+65Ms4O5z0g==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | 03d8905e47f9ffeb7fe6a21a40df8595cd917dfe 2 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.assets.cache -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 1074c00d7c0d0516d66ec72e4a754fe7b2ca060a 2 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/obj/Debug/netcoreapp2.0/AuthorizationServer.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/icon.jpg -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/icon.png -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/js/signout-redirect.js: -------------------------------------------------------------------------------- 1 | window.addEventListener("load", function () { 2 | var a = document.querySelector("a.PostLogoutRedirectUri"); 3 | if (a) { 4 | window.location = a.href; 5 | } 6 | }); 7 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/AuthorizationServer/wwwroot/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/browserslist: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # You can see what browsers were selected by your queries by running: 6 | # npx browserslist 7 | 8 | > 0.5% 9 | last 2 versions 10 | Firefox ESR 11 | not dead 12 | not IE 9-11 # For IE 9-11 support, remove 'not'. -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('app-root h1')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/app/app.component.scss: -------------------------------------------------------------------------------- 1 | @media (max-width: 767px) { 2 | /* On small screens, the nav menu spans the full width of the screen. Leave a space for it. */ 3 | .body-content { 4 | padding-top: 50px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/app/core/core.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { AuthService } from './auth/auth.service'; 4 | import { AuthModule, OidcSecurityService } from 'angular-auth-oidc-client'; 5 | 6 | @NgModule({ 7 | imports: [ 8 | CommonModule, 9 | AuthModule.forRoot() 10 | ], 11 | declarations: [], 12 | providers: [ 13 | AuthService, 14 | OidcSecurityService, 15 | ] 16 | }) 17 | export class CoreModule { } 18 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/app/counter/counter.component.html: -------------------------------------------------------------------------------- 1 |

Counter

2 | 3 |

This is a simple example of an Angular component.

4 | 5 |

Current count: {{ currentCount }}

6 | 7 | 8 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/app/counter/counter.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-counter-component', 5 | templateUrl: './counter.component.html' 6 | }) 7 | export class CounterComponent { 8 | public currentCount = 0; 9 | 10 | public incrementCounter() { 11 | this.currentCount++; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-home', 5 | templateUrl: './home.component.html', 6 | }) 7 | export class HomeComponent { 8 | } 9 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/app/nav-menu/nav-menu.component.scss: -------------------------------------------------------------------------------- 1 | a.navbar-brand { 2 | white-space: normal; 3 | text-align: center; 4 | word-break: break-all; 5 | } 6 | 7 | html { 8 | font-size: 14px; 9 | } 10 | @media (min-width: 768px) { 11 | html { 12 | font-size: 16px; 13 | } 14 | } 15 | 16 | .box-shadow { 17 | box-shadow: 0 .25rem .75rem rgba(0, 0, 0, .05); 18 | } 19 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/app/unauthorized/unauthorized.component.html: -------------------------------------------------------------------------------- 1 | 

2 | Login is required to access this area 3 |

4 |
5 | 6 | 7 |
-------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/assets/.gitkeep -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/favicon.ico -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ClientApp 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app", 5 | "types": [] 6 | }, 7 | "include": [ 8 | "src/**/*.ts" 9 | ], 10 | "exclude": [ 11 | "src/test.ts", 12 | "src/**/*.spec.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/ClientApp/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/Pages/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using ClientApp 2 | @namespace ClientApp.Pages 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | }, 7 | "AllowedHosts": "*" 8 | } 9 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ClientApp/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/ClientApp/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/README.md: -------------------------------------------------------------------------------- 1 | # OIDC with Angular client 2 | 3 | Creating an Angular client with implicit flow OIDC client, that can call an authorized end point on the resource api. 4 | 5 | Authorization server: 6 | Create spaClient with implicit grant 7 | 8 | Client app: 9 | Setup Angular app. I updated this to use Angular 5. 10 | Install the angular-auth-oidc-client package and setup the urls. Create methods for doing http calls that sets the Authorization header with the bearer token. 11 | 12 | Resource api: 13 | Setup an authorized controller with a method providing weather data. 14 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | obj/ -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/Controllers/IdentityController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using Microsoft.AspNetCore.Authorization; 4 | using Microsoft.AspNetCore.Mvc; 5 | 6 | namespace ResourceApi.Controllers 7 | { 8 | [Route("api/[controller]")] 9 | [Authorize] 10 | public class IdentityController : ControllerBase 11 | { 12 | [HttpGet] 13 | public IActionResult Get() 14 | { 15 | return new JsonResult(from c in User.Claims select new { c.Type, c.Value }); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | 4 | namespace ResourceApi 5 | { 6 | public class Program 7 | { 8 | public static void Main(string[] args) 9 | { 10 | BuildWebHost(args).Run(); 11 | } 12 | 13 | public static IWebHost BuildWebHost(string[] args) => 14 | WebHost.CreateDefaultBuilder(args) 15 | .UseStartup() 16 | .Build(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | }, 7 | "clientUrl": "https://localhost:44311" 8 | } 9 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "additionalProbingPaths": [ 4 | "C:\\Users\\chris\\.dotnet\\store\\|arch|\\|tfm|", 5 | "C:\\Users\\chris\\.nuget\\packages", 6 | "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/bin/Debug/netcoreapp2.0/ResourceApi.runtimeconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "runtimeOptions": { 3 | "tfm": "netcoreapp2.0", 4 | "framework": { 5 | "name": "Microsoft.NETCore.App", 6 | "version": "2.0.0" 7 | }, 8 | "configProperties": { 9 | "System.GC.Server": true 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | e740417de511f9b7d92a07f01beb8b5792cf12b8 2 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.assets.cache -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 503afcaf18017696baccbb3d68ff0bdce2316606 2 | -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.dll -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/ResourceApi/obj/Debug/netcoreapp2.0/ResourceApi.pdb -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/ResourceApi/obj/ResourceApi.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "bepwgaxdh7Uxd0mbZfsPUulk4hp5I4I37i5J0g7PE+HoWOH/0/NryoPS3bFITLOhRUqdKH1ohOGQTl4cT/VTbg==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /Solution 6 - OIDC and Angular client/Screenshots/calling-identity.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lydemann/oidc-angular-identityserver/b8e79913cbee441a342b5242ad6a5d8cf1994318/Solution 6 - OIDC and Angular client/Screenshots/calling-identity.PNG --------------------------------------------------------------------------------