0

OWIN 인증을 사용하여 SPA 응용 프로그램을 작성하고 있습니다. 처음에 내 응용 프로그램이처럼 보였다 IIS와 나의 권한 부여 옵션에서 기본 응용 프로그램으로 실행하도록 만들어진 (TokenEndpointPath = "/ 토큰") 더 이상이다 있도록 그러나웹 API 2 OWIN 무기명 토큰 인증/토큰 경로 변경/교환 방법

OAuthOptions = new OAuthAuthorizationServerOptions 
      { 
       //Exposes Token endpoint 
       TokenEndpointPath = new PathString("/Token"), 
       //Use ApplicationOAuthProvider in order to authenticate 
       Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory), 
       AuthorizeEndpointPath = new PathString("/MyApp/api/Account/ExternalLogin"), 
       AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), //Token expiration => The user will remain authenticated for 14 days 
       AllowInsecureHttp = true     
      }; 

, 나는이 이동할 필요가없는거야 내 API 호출 모두가이 경로에서 이동합니다 기본 응용 프로그램하지만 기본 IIS 응용 프로그램 내 자식 응용 프로그램 :

http://localhost:22657/ 

로는 :

http://localhost:22657/MyApp 

그래서,/토큰 경로는 더 이상 연결할 수 없습니다. 그래서, 난 할 내 TokenEndpointPath을 변경했을 :

TokenEndpointPath = new PathString("/MyApp/Token"), 

그러나, 내 브라우저를 인증 할 때 성공적으로하지만, 서버의 응답 내 Index.cshtml 파일에서 HTML이 전화입니다 수 있습니다. WebApi가 요청을 처리하는 이유를 진단하는 방법을 알지 못합니다 (분명히 OWIN에서 처리되지 않습니다 .GrantResourceOwnerCredentials 메서드에 중단 점을 설정하면 중단 점에 도달하지 않습니다).

내 WebApi 경로 중 어느 것도 "토큰"으로 구성되어 있지 않습니다.

1) 엔드 포인트에서 무슨 일이 일어나고 있는지 그리고 베어러 토큰 대신 HTML이 반환되는 이유를 알고 있습니까? 아니면 문제 해결 방법을 알아야합니까?

업데이트 :

나는 그것이 인덱스를 지정하는 다음과 같은 기본 경로에 관련되어야합니다 같아요. 이로 인해/MyApp/Token에 대한 요청이 Home/Index로 라우트됩니다. 이 문제를 방지하기 위해 "{* url}"대신 사용할 수있는 다른 것이 있습니까?

routes.MapRoute(
       name: "Default", 
       url: "{*url}", 
       defaults: new { controller = "Home", action = "Index" } 
      ); 

답변

0

MVC가 WebApi/MyApp/Token 끝점에 대한 호출을 가로 채고있었습니다. MVC가이 경로를 무시하도록 시도하면서 아래 두 번째 줄을 추가했습니다.

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.IgnoreRoute("{Token}"); 

그러나 이것은 작동하지 않았습니다. 내가 "Token"을 무시하도록 라인을 옮기면 정상적으로 작동합니다 :

routes.IgnoreRoute("{Token}"); 
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
관련 문제