>백엔드 개발 >C++ >AngularJS 애플리케이션용 ASP.NET Core에서 토큰 기반 인증을 구현하는 방법은 무엇입니까?

AngularJS 애플리케이션용 ASP.NET Core에서 토큰 기반 인증을 구현하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-27 18:53:12210검색

How to Implement Token-Based Authentication in ASP.NET Core for an AngularJS Application?

ASP.NET Core의 토큰 기반 인증


시나리오

AngularJS에 대한 토큰 기반 인증을 구현하려는 ASP.NET Core 애플리케이션 애플리케이션. AngularJS 애플리케이션은 사용자 이름과 비밀번호를 전달하는 특정 URL을 요청합니다. Web API는 사용자에게 권한을 부여하고 AngularJS 앱이 후속 요청에 사용할 액세스 토큰을 반환합니다.

ASP.NET Core에서 토큰 기반 인증을 구성하는 방법

토큰 기반으로 ASP.NET Core Web API 애플리케이션을 구성하려면 인증:

1. 상수 정의

토큰 대상 및 발급자에 대한 상수를 만듭니다.

const string TokenAudience = "Myself";
const string TokenIssuer = "MyProject";

2. 서비스 구성

Startup.cs 파일에서 ConfigureServices 메서드에 다음을 추가합니다.

var keySecret = authenticationConfiguration["JwtSigningKey"];
var symmetricKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(keySecret));

services.AddTransient(_ => new JwtSignInHandler(symmetricKey));

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
})
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters.ValidateIssuerSigningKey = true;
        options.TokenValidationParameters.IssuerSigningKey = symmetricKey;
        options.TokenValidationParameters.ValidAudience = JwtSignInHandler.TokenAudience;
        options.TokenValidationParameters.ValidIssuer = JwtSignInHandler.TokenIssuer;
    });

3. 인증 설정

Startup.cs 파일에서 사용자 정보가 필요한 미들웨어 앞에 다음 줄을 추가합니다.

app.UseAuthentication();

4. 토큰 구축

JWT 토큰 생성을 처리할 클래스를 생성합니다:

class JwtSignInHandler
{
    public const string TokenAudience = "Myself";
    public const string TokenIssuer = "MyProject";
    private readonly SymmetricSecurityKey key;

    public JwtSignInHandler(SymmetricSecurityKey symmetricKey)
    {
        this.key = symmetricKey;
    }

    public string BuildJwt(ClaimsPrincipal principal)
    {
        var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

        var token = new JwtSecurityToken(
            issuer: TokenIssuer,
            audience: TokenAudience,
            claims: principal.Claims,
            expires: DateTime.Now.AddMinutes(20),
            signingCredentials: creds
        );

        return new JwtSecurityTokenHandler().WriteToken(token);
    }
}

5. 토큰 반환

토큰을 반환하려는 컨트롤러 작업에서 BuildJwt 메서드를 호출합니다.

[HttpPost]
public string AnonymousSignIn([FromServices] JwtSignInHandler tokenFactory)
{
    var principal = new System.Security.Claims.ClaimsPrincipal(new[]
    {
        new System.Security.Claims.ClaimsIdentity(new[]
        {
            new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name, "Demo User")
        })
    });
    return tokenFactory.BuildJwt(principal);
}

이 단계를 통해 ASP.NET Core Web API 애플리케이션은 토큰 기반 인증을 사용하도록 구성되므로 AngularJS 애플리케이션이 보호된 리소스에 안전하게 액세스할 수 있습니다.

위 내용은 AngularJS 애플리케이션용 ASP.NET Core에서 토큰 기반 인증을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.