{"id":15410729,"url":"https://github.com/damienbod/aspnetcoreid4external","last_synced_at":"2025-04-06T18:17:58.328Z","repository":{"id":22936607,"uuid":"96910930","full_name":"damienbod/AspNetCoreID4External","owner":"damienbod","description":"External OpenID Connect Login to IdentityServer and ASP.NET Core with Entra ID","archived":false,"fork":false,"pushed_at":"2025-02-11T20:37:22.000Z","size":37692,"stargazers_count":79,"open_issues_count":0,"forks_count":26,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-30T17:11:08.323Z","etag":null,"topics":["2fa","aad","angular","asp-net-core","authenticator","authn","azure","bootstrap4","code-flow","fido2","identity","identityserver4","oauth2","oidc","openid","totp"],"latest_commit_sha":null,"homepage":"https://damienbod.com/2019/05/17/updating-microsoft-account-logins-in-asp-net-core-with-openid-connect-and-azure-active-directory/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/damienbod.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-11T15:53:21.000Z","updated_at":"2025-02-17T23:32:14.000Z","dependencies_parsed_at":"2025-02-20T10:11:14.308Z","dependency_job_id":"58ba7280-d9a2-4015-ac0a-de6339955049","html_url":"https://github.com/damienbod/AspNetCoreID4External","commit_stats":{"total_commits":283,"total_committers":2,"mean_commits":141.5,"dds":"0.014134275618374548","last_synced_commit":"8227bd9fafd43469bd0b034ff1e71c1e9b218aff"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damienbod%2FAspNetCoreID4External","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damienbod%2FAspNetCoreID4External/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damienbod%2FAspNetCoreID4External/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damienbod%2FAspNetCoreID4External/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/damienbod","download_url":"https://codeload.github.com/damienbod/AspNetCoreID4External/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247526770,"owners_count":20953143,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2fa","aad","angular","asp-net-core","authenticator","authn","azure","bootstrap4","code-flow","fido2","identity","identityserver4","oauth2","oidc","openid","totp"],"created_at":"2024-10-01T16:46:04.272Z","updated_at":"2025-04-06T18:17:58.307Z","avatar_url":"https://github.com/damienbod.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\r\n[![.NET](https://github.com/damienbod/AspNetCoreID4External/actions/workflows/dotnet.yml/badge.svg)](https://github.com/damienbod/AspNetCoreID4External/actions/workflows/dotnet.yml)\r\n\r\n## OIDC setup for external IDP (using Microsoft.Identity.Web)\r\n\r\n```csharp\r\nbuilder.Services.AddDistributedMemoryCache();\r\n\r\nbuilder.Services.AddAuthentication()\r\n    .AddMicrosoftIdentityWebApp(options =\u003e\r\n    {\r\n        builder.Configuration.Bind(\"AzureAd\", options);\r\n        options.SignInScheme = \"entraidcookie\";\r\n        options.UsePkce = true;\r\n        options.Events = new OpenIdConnectEvents\r\n        {\r\n            OnTokenResponseReceived = context =\u003e\r\n            {\r\n                var idToken = context.TokenEndpointResponse.IdToken;\r\n                return Task.CompletedTask;\r\n            }\r\n        };\r\n    }, copt =\u003e { }, \"EntraID\", \"entraidcookie\", false, \"Entra ID\")\r\n    .EnableTokenAcquisitionToCallDownstreamApi([\"User.Read\"])\r\n    .AddMicrosoftGraph()\r\n    .AddDistributedTokenCaches();\r\n```\r\n\r\n## Migrations\r\n\r\n```\r\nAdd-Migration \"InitIdentityNew\" -c ApplicationDbContext\r\n```\r\n\r\n```\r\nUpdate-Database\r\n```\r\n\r\n## Blogs\r\n\r\n## History \r\n\r\n- 2025-02-06 Angular 19\r\n- 2025-02-05 Updated identity provider, Updated API to use Open API\r\n- 2025-02-04 Updated packages, .NET 9\r\n- 2024-10-13 Updated packages\r\n- 2023-03-12 Updated packages\r\n- 2023-01-29 Updated identity provider\r\n- 2023-01-28 Updated packages .NET 7 and others\r\n- 2022-01-28 Updated packages\r\n- 2021-11-12 Updated .NET 6, Angular 13\r\n- 2021-07-01 Updated OIDC npm\r\n- 2021-03-17 Updated packages\r\n- 2020-12-06 Update to .NET 5, Using only Angular CLI\r\n- 2020-07-11 Added Angular CLI client using refresh tokens\r\n- 2020-07-05 Updated all npm, nuget packages\r\n- 2020-05-06 Updated FIDO2, switched to refresh tokens, using EC certificate\r\n- 2020-05-03 Updated OIDC lib to version 11, nuget packages\r\n- 2020-03-03 Added support for FIDO2, updated to Angular 9\r\n- 2020-01-04 Updated nuget packages, same site fix\r\n- 2019-12-13 Updated to .NET Core 3.1, Angular 8.2.14\r\n- 2019-10-07 Updated to .NET Core 3.0, Angular 8.2.9\r\n- 2019-05-30 Updated to Angular 8.0.0\r\n- 2019-05-15 Switched to OIDC code flow with PKCE, updated to Angular 7.2.15\r\n- 2019-05-14 Updated Microsoft login to OIDC login, updated STS\r\n- 2019-03-31 Updated to Angular 7.2.11, NuGet packages\r\n- 2019-02-07 Updated to Angular 7.2.4, ASP.NET Core 2.2\r\n- 2018-10-28 Updated to Angular 7.0.0, ASP.NET Core 2.1\r\n- 2018-05-27 Updated packages\r\n- 2018-05-08 Updated to .NET Core 2.1 rc1\r\n- 2018-05-04 Updated to Angular 6\r\n- 2018-05-01 Updated to bootstrap 4, switch to Authenticator\r\n- 2018-05-01 Updated Identity to use 2FA with TOTP, Angular 5.2.10, angular-auth-oidc-client 4.1.0\r\n- 2018-02-03 Updated npm and nuget packages, Angular 5.2.3, angular-auth-oidc-client 4.0.1\r\n- 2017-11-05 Updated to Angular 5 and Typescript 2.6.1\r\n- 2017-09-23 Updated to ASP.NET Core 2.0\r\n\r\n## Old blogs\r\n\r\n[Updating Microsoft Account Logins in ASP.NET Core with OpenID Connect and Azure Active Directory](https://damienbod.com/2019/05/17/updating-microsoft-account-logins-in-asp-net-core-with-openid-connect-and-azure-active-directory/)\r\n\r\n## Older blogs again\r\n\r\n### Adding an external Microsoft login to IdentityServer4\r\n\r\nhttps://damienbod.com/2017/07/11/adding-an-external-microsoft-login-to-identityserver4/\r\n\r\n### Implementing Two-factor authentication with IdentityServer4 and Twilio\r\n\r\n#### This is no longer recommended, removed from code. See history\r\n\r\nhttps://damienbod.com/2017/07/14/implementing-two-factor-authentication-with-identityserver4-and-twilio/\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamienbod%2Faspnetcoreid4external","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdamienbod%2Faspnetcoreid4external","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamienbod%2Faspnetcoreid4external/lists"}