{"id":23449676,"url":"https://github.com/gnobroga/aspnetautenticacaojwt","last_synced_at":"2025-04-10T05:53:19.239Z","repository":{"id":212559168,"uuid":"731788501","full_name":"GNobroga/AspNetAutenticacaoJwt","owner":"GNobroga","description":"Nesse repositório se encontra uma maneira de efetuar autenticação e autorização utilizando JWT e os middlewares e serviços oferecidos pelo Asp .NET","archived":false,"fork":false,"pushed_at":"2023-12-14T23:56:16.000Z","size":36,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-15T19:20:20.903Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/GNobroga.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":"2023-12-14T22:08:02.000Z","updated_at":"2024-08-16T15:04:47.000Z","dependencies_parsed_at":"2023-12-14T23:26:35.389Z","dependency_job_id":"6b3a7537-1c7b-423b-b102-9ab283ff1a50","html_url":"https://github.com/GNobroga/AspNetAutenticacaoJwt","commit_stats":null,"previous_names":["gnobroga/aspnetautenticacaojwt"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GNobroga%2FAspNetAutenticacaoJwt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GNobroga%2FAspNetAutenticacaoJwt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GNobroga%2FAspNetAutenticacaoJwt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GNobroga%2FAspNetAutenticacaoJwt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GNobroga","download_url":"https://codeload.github.com/GNobroga/AspNetAutenticacaoJwt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248166927,"owners_count":21058480,"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":"2024-12-23T23:28:43.953Z","updated_at":"2025-04-10T05:53:19.211Z","avatar_url":"https://github.com/GNobroga.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Autenticação JWT\n\nNesse projeto eu utilizo autenticação via JWT (Json Web Token) com dois endpoints dentro do ApiController, um público e outro privado. Além disso, utilizo algumas configurações para o middleware de Autenticação validar o token setar no escôpo do usuário.\n\n# Identity Server\n\nÉ um framework que permite criar um servidor de autenticação.\n\n## Duende Identity Server\n\nÉ uma implementação do Identity Server.\n\n## Terminologias do Identity Server\n\n### Client\n\nO cliente ele primeiro precisa ser registrado pra pode solicitar Token.\n\n```cs\npublic static IEnumerable\u003cClient\u003e Clients =\u003e\n            new Client[]\n            {\n                new Client\n                {\n                    ClientId = \"cwm.client\",\n                    ClientName = \"Client Credentials Client\",\n                    AllowedGrantTypes = GrantTypes.ClientCredentials,\n                    ClientSecrets = { new Secret(\"secret\".Sha256()) },\n                    AllowedScopes = { \"myApi.read\" }\n                },\n            };\n```\n\n### Identity Resource\n\nOs recursos de identidade são dados como userId, email, no. de telefone que são dados exclusivos para uma identidade do usuário.\n\n```cs\npublic static IEnumerable\u003cIdentityResource\u003e IdentityResources =\u003e\n    new IdentityResource[]\n    {\n        new IdentityResources.OpenId(),\n        new IdentityResources.Profile(),\n    };\n```\n\n## Api Scopes\n\nOs escopos representam o que um aplicativo cliente pode fazer e são normalmente modelados como recursos, que vêm em dois tipos: Identidade e API.\n\n```cs\npublic static IEnumerable\u003cApiScope\u003e ApiScopes =\u003e\n            new ApiScope[]\n            {\n                new ApiScope(\"myApi.read\"),\n                new ApiScope(\"myApi.write\"),\n            };\n```\n\n## Api Resource\n\nNeste código definimos a própria API onde damos a ela o nome de myApi e definimos os escopos suportados junto com o secret, e, aqui , você tem que aplicar um hash neste secret, visto que este código hash será salvo internamente no IdentityServer.\n\n```cs\n  public static IEnumerable\u003cApiResource\u003e ApiResources =\u003e\n            new ApiResource[]\n            {\n               new ApiResource(\"myApi\")\n               {\n                   Scopes = new List\u003cstring\u003e{ \"myApi.read\",\"myApi.write\" },\n                   ApiSecrets = new List\u003cSecret\u003e{ new Secret(\"supersecret\".Sha256()) }\n               }\n            };\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnobroga%2Faspnetautenticacaojwt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnobroga%2Faspnetautenticacaojwt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnobroga%2Faspnetautenticacaojwt/lists"}