Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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: 14 days 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 (about 1 year ago)
- Default Branch: master
- Last Pushed: 2023-12-14T23:56:16.000Z (about 1 year ago)
- Last Synced: 2024-04-09T15:11:51.642Z (9 months ago)
- Language: C#
- Homepage:
- Size: 35.2 KB
- Stars: 1
- 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()) }
}
};
```