2017-11-02 1 views
0

OAuth를 사용하여 웹 API에 대한 액세스를 허용합니다.특정 컨트롤러에만 OAuth Bearer 토큰 사용

public void ConfigureOAuth(IAppBuilder app, System.Web.Mvc.IDependencyResolver kernel) 
{ 
    OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions() 
    { 
     AllowInsecureHttp = true, 
     TokenEndpointPath = new PathString("/token"), 
     AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), 
     Provider = new SimpleAuthorizationServerProvider(), 
    }; 

    // Token Generation 
    app.UseOAuthAuthorizationServer(OAuthServerOptions); 
    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); 

} 

Startup.cs에서 : 나는 (: http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/ 예를 들어 다양한 튜토리얼에서) 이런 일이있다. 그러나 이것은 모든 컨트롤러에 대한 권한 부여를 전 세계적으로 촉발시킵니다. 단일 컨트롤러 (또는 소수의 컨트롤러 또는 메서드) 만 켜는 방법이 있습니까? 나는 웹 사이트의 다른 부분에 대한 사용자 지정 권한이 있고 그들에게 갈 수 있고 전달 된 자격 증명이 무기 토큰이고 그냥 거절 하는지를 확인할 수 있지만 좀 더 우아한 해결책이 없는지 궁금합니다.

답변

0

저는 최근에 Oauth와 놀았으며 API의 특정 컨트롤러에 대해 [allowAnonymous]가 필요하지만 다른 프로젝트에서는 익명을 거부했습니다.

귀하의 상황에 도움이되는지는 모르지만 도움이 될 경우를 대비해 공유 할 것이라고 생각합니다.

각 시나리오의 해결을 위해 익명 허용이 필요한 각 컨트롤러의 API Web.config에 아래 내용을 추가하십시오.

</system.codedom> 
    <location path="api/controller"> 
    <system.web> 
     <authorization> 
     <allow users="?"/> 
     </authorization> 
    </system.web> 
    </location> 
</configuration>