login register Sysop! about ME  
qrcode
    최초 작성일 :    2017년 02월 27일
  최종 수정일 :    2017년 02월 27일
  작성자 :    soggun
  편집자 :    soggun (송원석)
  읽음수 :    9,332

강좌 목록으로 돌아가기

필자의 잡담~

이번 컬럼은 ASP.NET Core 보안 강좌의 9번째 글, 스키마별 신원 제한에 대한 글입니다.

모든 컬럼은 http://docs.asp.net의 내용을 참고하여 번역한 것입니다. Windows 뿐만 아니라 Linxu, OS X에서도 동작하는 완전한 크로스 플랫폼 서버기술인 ASP.NET Core! 기대해 주세요.

본 번역문서는 개인적인 취지로 번역되어 제공되는 문서로, 원문을 비롯한 모든 저작권은 마이크로소프트사에 있습니다. 마이크로소프트사의 요청이 있을 경우, 언제라도 게시가 중단될 수 있습니다. 본 번역문서에는 오역이 포함되어 있을 수 있으며 주석도 번역자 개인의 견해일뿐입니다. 마이크로소프트사는 본 문서의 번역된 내용에 대해 일체의 보장을 하지 않습니다. 번역이 완료된 뒤에도 제품이 업그레이드 되거나 기능이 변경됨에 따라 원문도 변경되거나 보완되었을 수 있으므로 참고하시기 바랍니다.

원문: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/limitingidentitybyscheme

스키마별 신원 제한

단일 페이지 응용 프로그램(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 미들웨어에 의해 생성된 신원을 대상으로만 실행됩니다.


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})