5

documentation describes 하나 개 이상의 인증 방식 사용하는 방법 부분 : 예는 여러 인증 방법으로 끝낼 수 있습니다 단일 페이지 응용 프로그램과 같은 일부 시나리오에서는여러 승인 스키마를 사용하여 ASP.NET에서 해당 무기명 및 쿠키 ID를 어떻게 발급합니까?

합니다. 예를 들어, 애플리케이션은 쿠키 기반 인증을 사용하여 JavaScript 요청에 대한 로그인 및 베어러 인증을 수행 할 수 있습니다. 어떤 경우에는 인증 미들웨어의 인스턴스가 여러 개있을 수 있습니다. 예를 들어, 하나의 기본 신원을 포함하는 두 개의 쿠키 미들웨어는 사용자가 추가 보안이 필요한 작업을 요청했기 때문에 다중 요소 인증이 트리거되었을 때 만들어집니다.

예 :

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; 
}); 

단지 무기명 또는 쿠키 인증을 사용하는 방법에 대해 설명 그러나

. 명확하지 않은 것은 다른 조합이 유효하거나 클라이언트에 베어러 또는 쿠키를 올바르게 발행하는 방법입니다.

어떻게 수행 할 수 있습니까? 페이스 북, 구글 등의 사용과 같은 대형 사이트가 여러 쿠키 인증 미들웨어의를 사용하고 그 중 하나를 설정하는 것입니다 이것에 대한

+0

그 예일뿐입니다. 자체 인증 미들웨어를 만들어 위 목록에 추가하고 어떤 조합 으로든 사용할 수 있습니다 (예 : 하나의 컨트롤러는 3 개의 스키마 중 하나를 사용하여 인증을 허용 할 수도 있고, 다른 하나는 오직 하나만 허용 할 수도 있습니다. – Vitaly

+0

또한 "Cookie"미들웨어를 다른 AuthenticationScheme 이름 및 기타 설정으로 두 번 추가 할 수 있습니다. – Vitaly

+0

"중간"Identity Server 4.0? 그랬더니 시간이 많이 걸렸습니다. 샘플 및 패턴을 사용하여 질문에 대한 대부분의 답변을 얻었습니다. http://docs.identityserver.io – Raffaeu

답변

4

한 가지 일반적인 사용 사례 AutomaticAuthenticate

app.UseCookieAuthentication(new CookieAuthenticationOptions() 
{ 
    AuthenticationScheme = "InsecureLongLived", 
    LoginPath = new PathString("/Account/Unauthorized/"), 
    AccessDeniedPath = new PathString("/Account/Forbidden/"), 
    AutomaticAuthenticate = true 
}); 
app.UseCookieAuthentication(new CookieAuthenticationOptions() 
{ 
    AuthenticationScheme = "SecureAndShortLived", 
    LoginPath = new PathString("/Account/Unauthorized/"), 
    AccessDeniedPath = new PathString("/Account/Forbidden/"), 
    AutomaticAuthenticate = false 
}); 
  • 기본 하나를 사용하여 기본값으로 오랫동안 살며 중요하지 않은 인증 시나리오에 사용됩니다. Facebook에서 프로필 페이지를 볼 수 있습니다.
  • 암호 또는 프로필 정보 변경과 같은 중요한 보안 사용자 작업에보다 안전하고 수명이 짧을수록 좋습니다.

이렇게하면 수명이 긴 쿠키로 항상 로그인 할 필요가 없지만 잠재적으로 위험한 작업을 수행해야하는 즉시 편리하게 훨씬 짧은 수명의 인증을 사용하도록 전환 할 수 있습니다 사용자가 다시 로그인해야하는 쿠키

+1

훌륭한 답변을 통해 정말 도움이되었습니다. 그러나 나는이 문서 (https://docs.microsoft.com/en-us/aspnet/core/security/authorization/limitingidentitybyscheme)에'AutomaticAuthenticate'를 true로 설정해서는 안된다는 것을 알았습니다. 나는이 접근법을 많이 좋아하지만 네이티브 JWT 기반 시나리오에 사용할 수 있습니까? 서버가 401을 반환하고 재 인증을 시도하는 정책을 알지 못하기 때문에 기본 클라이언트가 토큰을 모두 관리하고 파악해야 할 것입니다. – nhwilly

+1

Muhammad, 덜 안전한 페이지에 액세스 할 때 덜 안전한 쿠키를 사용하는 것으로 전환하고 안전한 쿠키가 만료되었습니다. – nhwilly

+0

@nhwilly 인증 정책을 살펴보십시오. AuthenticationScheme을 설정하여 각 쿠키 인증 미들웨어에 대해 하나를 설정할 수 있습니다. 그런 다음 Authorize 속성을 사용하여 올바른 정책을 사용하기 만하면됩니다. –