2017-11-02 12 views
0

OAuthを使用してWeb APIにアクセスできるようにする。特定のコントローラにのみOAuthベアラトークンを使用する

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> 
関連する問題