https://github.com/gnobroga/aspnetautenticacaojwt
  
  
    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 
    https://github.com/gnobroga/aspnetautenticacaojwt
  
        Last synced: 7 months ago 
        JSON representation
    
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
- Host: GitHub
- URL: https://github.com/gnobroga/aspnetautenticacaojwt
- Owner: GNobroga
- Created: 2023-12-14T22:08:02.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2023-12-14T23:56:16.000Z (almost 2 years ago)
- Last Synced: 2025-02-15T19:20:20.903Z (9 months ago)
- Language: C#
- Homepage:
- Size: 35.2 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
- 
            Metadata Files:
            - Readme: README.md
 
Awesome Lists containing this project
README
          # Autenticação JWT
Nesse 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.
# Identity Server
É um framework que permite criar um servidor de autenticação.
## Duende Identity Server
É uma implementação do Identity Server.
## Terminologias do Identity Server
### Client
O cliente ele primeiro precisa ser registrado pra pode solicitar Token.
```cs
public static IEnumerable Clients =>
            new Client[]
            {
                new Client
                {
                    ClientId = "cwm.client",
                    ClientName = "Client Credentials Client",
                    AllowedGrantTypes = GrantTypes.ClientCredentials,
                    ClientSecrets = { new Secret("secret".Sha256()) },
                    AllowedScopes = { "myApi.read" }
                },
            };
```
### Identity Resource
Os recursos de identidade são dados como userId, email, no. de telefone que são dados exclusivos para uma identidade do usuário.
```cs
public static IEnumerable IdentityResources =>
    new IdentityResource[]
    {
        new IdentityResources.OpenId(),
        new IdentityResources.Profile(),
    };
```
## Api Scopes
Os 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.
```cs
public static IEnumerable ApiScopes =>
            new ApiScope[]
            {
                new ApiScope("myApi.read"),
                new ApiScope("myApi.write"),
            };
```
## Api Resource
Neste 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.
```cs
  public static IEnumerable ApiResources =>
            new ApiResource[]
            {
               new ApiResource("myApi")
               {
                   Scopes = new List{ "myApi.read","myApi.write" },
                   ApiSecrets = new List{ new Secret("supersecret".Sha256()) }
               }
            };
```