0Pricing
C# Academy · 강의

정책 기반 권한 부여

재사용 가능한 권한 부여 정책을 정의합니다.

정책 기반 권한 부여은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

정책 모델

ASP.NET Core에서는 모든 권한 부여 확인이 궁극적으로 정책을 통해 실행됩니다. 역할 및 클레임 특성은 내부적으로 정책을 만드는 축약 표현입니다.

이름이 지정된 정책을 정의하면 규칙을 한곳에서 관리하고 컨트롤러를 깔끔하게 유지할 수 있습니다.

[Authorize(Policy = "CanManageOrders")]

AddAuthorization

AddAuthorization을 사용하여 서비스 컨테이너에 정책을 등록하십시오. 각 정책에는 고유한 이름이 지정됩니다.

builder.Services.AddAuthorization(options =>
{
    options.AddPolicy("CanManageOrders", policy =>
        policy.RequireRole("admin", "sales"));
});

RequireAuthenticatedUser

가장 기본적인 요구 사항은 사용자가 로그인한 상태인지 확인하는 것입니다. RequireAuthenticatedUser는 익명 호출자를 거부합니다.

options.AddPolicy("SignedIn", policy =>
    policy.RequireAuthenticatedUser());

요구 사항 구성하기

정책 작성기는 여러 요구 사항을 연결합니다. 정책은 모든 요구 사항을 통과해야만 성공합니다.

options.AddPolicy("SeniorEditor", policy =>
    policy
        .RequireAuthenticatedUser()
        .RequireRole("editor")
        .RequireClaim("seniority", "senior"));

기본 정책

인수가 없는 단순한 [Authorize]는 기본 정책을 사용하며, 기본적으로 인증된 사용자만 요구합니다. 이 정책을 바꿀 수 있습니다.

options.DefaultPolicy = new AuthorizationPolicyBuilder()
    .RequireAuthenticatedUser()
    .RequireClaim("email_verified", "true")
    .Build();

대체 정책

대체 정책은 권한 부여 특성이 전혀 없는 엔드포인트에 적용됩니다. 기본적으로 보안을 적용하는 강력한 방법입니다.

options.FallbackPolicy = new AuthorizationPolicyBuilder()
    .RequireAuthenticatedUser()
    .Build();
// Now every endpoint requires auth unless marked [AllowAnonymous]

AllowAnonymous로 제외하기

대체 정책으로 모든 항목이 잠긴 경우 [AllowAnonymous]를 사용하여 로그인이나 상태 확인과 같은 공개 엔드포인트를 노출하십시오.

[AllowAnonymous]
[HttpGet("health")]
public IActionResult Health() => Ok("healthy");

엔드포인트에 정책 적용하기

특성 또는 최소 API 확장 메서드에서 정책을 이름으로 참조하십시오.

// Controller
[Authorize(Policy = "SeniorEditor")]
public IActionResult Publish() => Ok();

// Minimal API
app.MapPost("/publish", () => Results.Ok())
   .RequireAuthorization("SeniorEditor");

엔드포인트 그룹화하기

전체 경로 그룹에 정책을 적용하면 내부의 모든 엔드포인트가 해당 정책을 상속합니다.

var admin = app.MapGroup("/admin")
               .RequireAuthorization("CanManageOrders");

admin.MapGet("/stats", () => Results.Ok());
admin.MapDelete("/{id}", (int id) => Results.NoContent());

내부에서 처리되는 요구 사항

각 Require* 호출은 정책에 IAuthorizationRequirement를 추가합니다. 일치하는 처리기가 각 요구 사항을 평가합니다. 기본 제공 규칙은 이 과정이 자동으로 이루어지지만, 사용자 지정 규칙에는 사용자 지정 처리기가 필요합니다(다음 강의).

// RequireRole("admin") adds a RolesAuthorizationRequirement
// RequireClaim(...) adds a ClaimsAuthorizationRequirement

정책을 정의할 위치

모든 정책 정의를 하나의 확장 메서드에 모아 쉽게 찾고 테스트할 수 있도록 하십시오.

public static IServiceCollection AddAppPolicies(
    this IServiceCollection services)
{
    services.AddAuthorization(o =>
    {
        o.AddPolicy("SignedIn", p => p.RequireAuthenticatedUser());
        o.AddPolicy("CanManageOrders", p => p.RequireRole("admin"));
    });
    return services;
}

빠른 확인

기본 정책과 대체 정책에 대한 이해를 확인해 보십시오.

요약

정책 기반 권한 부여를 배웠습니다.

  • AddPolicy는 이름이 지정된 재사용 가능한 규칙을 정의합니다.
  • RequireAuthenticatedUser, RequireRole, RequireClaim은 AND 의미로 함께 구성됩니다.
  • DefaultPolicy는 단순한 [Authorize]의 기반이 되고, FallbackPolicy는 표시가 없는 엔드포인트를 보호합니다.
  • [AllowAnonymous]를 사용하면 이 적용에서 제외할 수 있습니다.

다음 주제: 사용자 지정 권한 부여 요구 사항 및 처리기

자주 묻는 질문

“정책 기반 권한 부여” 강의는 무료인가요?

네 — “정책 기반 권한 부여” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“정책 기반 권한 부여”에서 뭘 배우나요?

재사용 가능한 권한 부여 정책을 정의합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“정책 기반 권한 부여” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 역할 기반 권한 부여
  2. 클레임 기반 권한 부여
  3. 정책 기반 권한 부여
  4. 사용자 지정 권한 부여 요구 사항
← C# Academy(으)로 돌아가기