권한부여: 스키마별 신원 제한
- 본 번역문서의 원문은 Limiting identity by scheme docs.microsoft.com 입니다.
- 본 번역문서는 ASP.NET Core 보안 : 스키마별 신원 제한 www.taeyo.net 에서도 함께 제공됩니다.
단일 페이지 응용 프로그램(SPA) 같은 일부 시나리오에서는 동시에 여러 가지 인증 방법이 사용될 수 있습니다. 가령, 어떤 응용 프로그램에서는 로그인은 쿠키 기반의 인증을 수행하고 JavaScript 요청은 전달자(Bearer) 인증을 사용해서 수행합니다. 때로는 인증 미들웨어의 인스턴스가 여러 개일 수도 있습니다. 예를 들어, 기본 신원을 포함하는 쿠키 미들웨어와 사용자가 추가적인 보안이 필요한 작업을 요청해서 다단계 인증(Multi-Factor Authentication)이 발생할 때 생성되는 미들웨어, 이렇게 두 가지 쿠키 미들웨어가 존재하는 경우도 있습니다.
인증 체계(Authentication Schemes)의 이름은 다음과 같이 인증 도중 인증 미들웨어가 구성될 때 지정됩니다:
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "Cookie",
LoginPath = new PathString("/Account/Unauthorized/"),
AccessDeniedPath = new PathString("/Account/Forbidden/"),
AutomaticAuthenticate = false
});
app.UseBearerAuthentication(options =>
{
options.AuthenticationScheme = "Bearer";
options.AutomaticAuthenticate = false;
});
이 예제 구성에서는 쿠키 및 전달자를 위한 두 가지 인증 미들웨어가 추가됩니다.
노트
복수의 인증 미들웨어를 추가할 때는 자동실행되도록 구성된 미들웨어가 존재하면 안됩니다.
이 작업은 AutomaticAuthenticate
옵션 속성을 false로 설정하여 처리할 수 있습니다.
이 설정을 누락할 경우 스키마별 필터링이 정상적으로 동작하지 않을 것입니다.
Authorize 어트리뷰트로 인증 체계 선택하기
모든 인증 미들웨어가 자동으로 실행되거나 신원을 생성해야만 하도록 구성되지 않았으므로, 권한부여 시점에 사용할 미들웨어를 선택하게 됩니다.
권한부여에 사용하고자 하는 미들웨어를 선택하는 가장 간단한 방법은 ActiveAuthenticationSchemes
속성을 사용하는 것입니다.
이 속성은 다음과 같이 쉼표(,)로 연결된 사용할 인증 체계의 목록을 전달 받습니다:
[Authorize(ActiveAuthenticationSchemes = "Cookie,Bearer")]
public class MixedController : Controller
이 예제 코드에서는 쿠키 미들웨어 및 전달자 미들웨어가 모두 실행되어 현재 사용자의 신원을 생성하고 추가할 수 있는 기회를 갖습니다. 반면 단일 인증 체계를 지정하는 경우에는 지정된 미들웨어만 실행됩니다:
[Authorize(ActiveAuthenticationSchemes = "Bearer")]
이 코드의 경우에는 전달자 체계의 미들웨어만 실행되며, 모든 쿠키 기반의 신원들은 무시됩니다.
정책을 이용해서 인증 체계 선택하기
정책을 이용해서 필요한 인증 체계를 지정하는 방식을 선호한다면 정책을 추가할 때 AuthenticationSchemes
컬렉션을 설정할 수 있습니다.
options.AddPolicy("Over18", policy =>
{
policy.AuthenticationSchemes.Add("Bearer");
policy.RequireAuthenticatedUser();
policy.Requirements.Add(new Over18Requirement());
});
이 예제의 Over18 정책은 Bearer
미들웨어에 의해 생성된 신원을 대상으로만 실행됩니다.
- 권한부여: 개요 2017-01-14 08:00
- 권한부여: 간단한 권한부여 2017-01-14 11:00
- 권한부여: 역할 기반 권한부여 2017-01-14 14:00
- 권한부여: 클레임 기반 권한부여 2017-01-15 08:00
- 권한부여: 사용자 지정 정책 기반 권한부여 2017-01-15 11:00
- 권한부여: 요구사항 처리기와 의존성 주입 2017-01-15 14:00
- 권한부여: 리소스 기반 권한부여 2017-01-16 08:00
- 권한부여: 뷰 기반 권한부여 2017-01-16 11:00
- 권한부여: 스키마별 신원 제한 2017-01-16 14:00
- 인증: ASP.NET Core Identity 살펴보기 2017-01-30 08:00
- 인증: Facebook, Google 및 기타 외부 공급자를 이용한 인증 활성화시키기 2017-02-13 08:00
- 인증: Facebook 인증 구성하기 2017-02-13 11:00
- 인증: Twitter 인증 구성하기 2017-02-20 08:00
- 인증: Google 인증 구성하기 2017-02-20 11:00
- 인증: Microsoft 계정 인증 구성하기 2017-02-20 14:00
- 인증: 계정 확인 및 비밀번호 복구 2017-03-06 08:00
- 인증: SMS를 이용한 2단계 인증 2017-03-13 08:00
- 인증: ASP.NET Core Identity 없이 Cookie 미들웨어 사용하기 2017-03-20 08:00
- 데이터 보호: 데이터 보호 개요 2017-03-27 08:00
- 데이터 보호: 데이터 보호 API 시작하기 2017-03-29 08:00
- 데이터 보호: 소비자 APIs 개요 2017-03-31 08:00
- 데이터 보호: 용도 문자열 2017-04-03 08:00
- 데이터 보호: ASP.NET Core의 용도 계층 구조 및 다중-테넌트(Multi-Tenancy) 2017-04-05 08:00
- 데이터 보호: 비밀번호 해싱 2017-04-07 08:00
- 데이터 보호: 보호된 페이로드의 수명 제한하기 2017-04-10 08:00
- 테이터 보호: 키가 취소된 페이로드의 보호 해제하기 2017-04-12 08:00
- 데이터 보호: 데이터 보호 구성하기 2017-04-14 08:00
- 데이터 보호: 키 관리 및 수명 기본 설정 2017-04-17 08:00
- 데이터 보호: 머신 수준 정책 2017-04-19 08:00
- 데이터 보호: 비-DI 인식 시나리오 2017-04-21 08:00
- 호환성: 응용 프로그램 간 인증 쿠키 공유하기 2017-05-12 08:00
- 호환성: ASP.NET의 <machineKey> 요소 대체하기 2017-05-16 08:00
- 교차 원본 요청 활성화시키기 (CORS) 2017-05-17 08:00
- ASP.NET Core 응용 프로그램에 SSL 적용하기 2017-05-18 08:00
- 개발 중 민감한 응용 프로그램 정보 안전하게 저장하기 2017-05-19 08:00