2014-02-22 2 views
6

안녕하세요, SPA 템플릿의 MVC5에서 새 인증 메커니즘이 어떻게 작동하는지 궁금해하고 있습니다. 최종 목표는 다음과 같은 API를 만드는 것입니다.ASP.NET MVC5 이해하기 새로운 인증 메커니즘

[assembly: OwinStartup(typeof(WebApplication1.Startup))] 

magicly ConfigureAuth 메소드를 호출한다 :

은 어떻게 든 시작시 클래스가 장식 것을 이해하십시오 SPA, 아이폰 OS, 안드로이드와 윈도우 폰 클라이언트 여기

에 노출되는 것은 내가 이해입니다 :

내 응용 프로그램 및 쿠키를 사용하는 외부 프로그램을 설정하는 것 ConfigureAuth에서

static Startup(){ 
     PublicClientId = "self"; 

     UserManagerFactory =() => new UserManager<IdentityUser>(new UserStore<IdentityUser>()); 

     OAuthOptions = new OAuthAuthorizationServerOptions { 
       TokenEndpointPath = new PathString("/Token"), 
       Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory), 
       AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"), 
       AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), 
       AllowInsecureHttp = true 
     }; 
} 

public void ConfigureAuth(IAppBuilder app) 
{ 
    app.UseCookieAuthentication(new CookieAuthenticationOptions()); 
    app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 
    app.UseOAuthBearerTokens(OAuthOptions); 
} 

처음 두 행 :이 방법 내부

나는 코드의 3 개 라인을 가지고 시작 클래스 생성자 내부에서 나는의 OAuth 인증 옵션을 초기화 한 인증 상태를 저장하는 동안, 세 번째는 내 응용 프로그램에 대해 베어러 토큰을 사용하는 것으로 나타납니다.

휴대 기기의 기본 앱에서 쿠키가 인식되지 않아 인증을 위해 토큰을 사용해야하는 제한된 지식이 무엇인지 알 수 있습니다.

외부 쿠키 대신 externalSignIn을 무기명 토큰으로 설정하면 안됩니다. 디버깅하는 동안

나는 또한 OAuthProvider에서 인증 유형은 실제로는 actualy 할 코드 줄을 무엇의 경우 tokens.If bearrer로 설정되어 있는지주의 :

app.UseCookieAuthentication (새 CookieAuthenticationOptions을()) ;

어떻게 작동하는지에 대한 몇 가지 설명은 감사합니다. 온라인 로그인을 통해 온라인 로그인 정보 만 찾을 수있었습니다.

답변

5

MVC 5 SPA 템플릿은 특정 모범 사례에 대한 약속 이상의 가능성을 보여줍니다.

나는 SPA에서 일반적으로 그러 하듯이 필요한 모든 HTML을 익명으로 검색하고 이후 모든 데이터 요청에 대해 모든 인증을 수행하기 때문에 SPA에 아무런 영향을 미치지 않는 것으로 나타났습니다. 이 경우 데이터는 WebAPI 엔드 포인트에서 검색되고 베어러 토큰으로 보호됩니다.

나는 왜 이런 식으로했는지 모른다. 두 개의 다른 관심사가 조금 혼란스러워 보이는 이와 같은 여러 영역이 있습니다. 예를 들어 기존의 Global.asax MVC Application_Start은 아직 설치되어 있지만 새로운 OWIN 시작 메커니즘도 있습니다. OWIN 시작시 Application_Start (필터/경로/번들 등록 등)의 모든 항목을 처리하지 못했던 이유는 없습니다.

다른 문제도 있습니다. 외부 인증 (예 : Google)을 사용 설정하고 AccessTokenExpireTimeSpan을 줄이면 토큰이 만료되면 SPA에 '이 요청에 대한 승인이 거부되었습니다'라는 메시지가 나타납니다. 메시지. 즉, 토큰 새로 고침을위한 메커니즘이 없습니다. 액세스 토큰 타임 아웃이 14 일로 설정되어있어 Cross-Site Request Forgery 공격 등을 고려할 때 다소 불안정하기 때문에 즉시 사용 가능한 것은 아닙니다. 또한 SSL과 같은 전송 보안 메커니즘이 적용되지 않습니다.토큰은 이 아니며은 본질적으로 안전하지 않으며 CRSF 공격 및 데이터가 도중에 추출되는 것을 방지하기 위해 이동 중에 안전하게 보호해야합니다.

그래서 MVC 5 SPA는 데모로 사용하기에 적합하다고 생각합니다.하지만 프로덕션에서는 사용하지 않을 것입니다. 새로운 OWIN Middleware가 수행 할 수있는 작업을 보여 주지만 토큰 기반 보안에 대한 포괄적 인 지식을 대체 할 수는 없습니다.