{"id":26515494,"url":"https://github.com/brakmic/id4.experiment","last_synced_at":"2025-03-21T06:16:03.156Z","repository":{"id":277370748,"uuid":"932170401","full_name":"brakmic/id4.experiment","owner":"brakmic","description":"IdentityServer 4 show case","archived":false,"fork":false,"pushed_at":"2025-02-13T15:03:27.000Z","size":1341,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-14T22:49:37.203Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brakmic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-02-13T13:39:56.000Z","updated_at":"2025-02-13T15:03:31.000Z","dependencies_parsed_at":"2025-02-13T16:24:16.768Z","dependency_job_id":"4fbde925-903d-4f33-b3d7-d15a919af042","html_url":"https://github.com/brakmic/id4.experiment","commit_stats":null,"previous_names":["brakmic/id4.experiment"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brakmic%2Fid4.experiment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brakmic%2Fid4.experiment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brakmic%2Fid4.experiment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brakmic%2Fid4.experiment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brakmic","download_url":"https://codeload.github.com/brakmic/id4.experiment/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244745709,"owners_count":20503050,"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":[],"created_at":"2025-03-21T06:16:02.627Z","updated_at":"2025-03-21T06:16:03.151Z","avatar_url":"https://github.com/brakmic.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Experimental Identity Server based on IdentityServer4\n\nThis solution consists of several projects:\n\n* An Identity Server\n* Two Client Apps (a web app and a console app) for accessing protected resources\n* An API that represents a protected resource\n\n![solution](./Images/solution.png)\n\n### Running\n\n*Before starting, ensure that you have entered valid database credentials in the `appsettings.json` of the IdentityProvider project.*\n\nThe solution is configured to launch both the Identity Provider and the API simultaneously:\n\n![multiple_projects](./Images/multiple_projects.png)\n\n*On first run, the Identity Provider will create its database and execute several migration scripts. This may take a few moments.*\n\nAfter that, you should see two console windows: one for the Identity Provider and one for the API.\n\n![two_consoles](./Images/two_consoles.png)\n\nYou can now start one of the clients to test the environment.\n\na) `Client.Henkel` is a console-based *machine-to-machine* client with no user interaction.  \nb) `Client.BI` is a simple MVC application that involves a user login procedure.\n\n### Clients\n\nThe **non-interactive client** communicates with the Identity Provider to obtain tokens, which are then used to access the API.\n\n![client_console](./Images/client_console.png)\n\nThe **interactive client** requires a user to supply credentials. These credentials are then used to access protected areas.\n\n![mvc_1](./Images/mvc_1.png)\n\n![mvc_2](./Images/mvc_2.png)\n\n![mvc_3](./Images/mvc_3.png)\n\nAs shown above, tokens can include additional `Claims`, which the application can use for further processing. For example, the Identity Server confirms that the user belongs to the BI_Role \"Enterprise\" and represents the Customer \"Henkel\".\n\n### Diagram - Authentication \u0026 Authorization with Identity Server\n\n![id_diagram](./Images/id_diagram.png)\n\n### References\n\n* IdentityServer [Docs](https://identityserver4.readthedocs.io/)\n* OpenID Connect [Home Page](https://openid.net/connect/)\n* OAuth2 [Standard](https://oauth.net/2/)\n\n### Notice\n\nIdentityServer is just one of the [many](https://documentation.openiddict.com/) [implementations](https://www.ory.sh/) of identity platforms.\n\nSince they all implement the same OpenID Connect standard, it can be replaced by any other implementation—or you can develop your own.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrakmic%2Fid4.experiment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrakmic%2Fid4.experiment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrakmic%2Fid4.experiment/lists"}