ASP.NET Core - 간단한 JWT 인증 작성
9329 단어 webapicsharpdotnetauthentication
Microsoft.AspNetCore.Authentication.JwtBearer
비밀 키가 필요합니다.
user-secrets
를 사용하여 추가하십시오.dotnet user-secrets init
dotnet user-secrets set "Authentication:JwtSecret" "thisismysecret"
경고! 사용자 암호는 프로덕션에서 사용하기 위한 것이 아닙니다.
Program.cs
또는 Startup.cs
에서:using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.IdentityModel.Tokens;
서비스를 추가합니다.
builder.Services
.AddAuthentication()
.AddJwtBearer("JwtScheme", options => {
options.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = "https://localhost:<port>",
ValidAudience = "https://localhost:<port>",
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Authentication:JwtSecret"])),
};
})
사용자가
JWTScheme
로 인증되어야 한다고 MVC에 알립니다.builder.Services.AddControllers(options => {
options.Filters.Add(new AuthorizeFilter
(new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes("JwtScheme")
.Build()));
})
HTTP 요청 파이프라인에서 컨트롤러를 매핑하기 전에 다음을 추가합니다.
app.UseAuthentication();
app.UseAuthorization();
인증 컨트롤러에서:
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
.
.
//inject `IConfiguration` to `_configuration` in the constructor.
로그인 방법에서
[AllowAnonymous]
속성을 추가합니다. 그 다음에://validate credentials and get user details here
var key = Encoding.ASCII.GetBytes(_configuration["Authentication:JwtSecret"]);
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim(ClaimTypes.Name, user.Username)
};
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(claims),
Issuer = "https://localhost:<port>",
Audience = "https://localhost:<port>",
Expires = DateTime.UtcNow.AddDays(7),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature),
};
var tokenHandler = new JwtSecurityTokenHandler();
var token = tokenHandler.CreateToken(tokenDescriptor);
return tokenHandler.WriteToken(token);
로그인 방법은 생성된 토큰을 반환합니다.
Authorize
인 Bearer <the token generated>
헤더를 추가합니다. Postman 또는 원하는 테스트 프로그램을 통해 테스트할 수 있습니다. 자원
Infoworld Article - JWT
Microsoft Docs - User Secrets
Reference
이 문제에 관하여(ASP.NET Core - 간단한 JWT 인증 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kazinix/aspnet-core-write-a-simple-jwt-authentication-and-authorization-7nk텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)