使用 OAuth 允许访问网络 API。我有这样的东西(例如来自各种教程:http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/):
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
中。但这会为我所有的 Controller 启用全局授权。有没有办法只为单个 Controller (或少数 Controller 或方法)打开它?我对网站的其他部分有自定义授权,我可以进入它们并检查传递的凭据是否是不记名 token 并拒绝它,但我想知道是否没有更优雅的解决方案。
最佳答案
我最近一直在玩 Oauth,遇到了一个不同的场景,我需要对 API 中的某些 Controller [allowAnonymous],同时拒绝对项目的其余部分进行匿名。
我不知道这是否对您的情况有帮助,但我想我会分享以防万一它有帮助。
将以下内容添加到我需要允许匿名的每个 Controller 的 API 的 Web.config 中,以解决我的场景。
</system.codedom>
<location path="api/controller">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
</configuration>
关于c# - 仅对某些 Controller 使用 OAuth Bearer token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47083475/