我经历了很多文档,但似乎我的问题很奇怪。 我已经配置了Oauth,但我无法获得持有者令牌。每当我点击api获取令牌时,我得到200但没有回复(我期待不记名令牌)。以下是配置:
ThreadPoolTaskExecutor
现在当我启动APi并点击/令牌时,我得到如下:
答案 0 :(得分:2)
我认为您在WebApiConfig.cs中编写的代码可以抑制主机身份验证,而其他一些代码也会产生问题。 我有一个工作示例,用于在Web API中生成承载令牌,它正常工作并生成令牌。
WebApiConfig.cs文件代码:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Startup.cs代码:
[assembly: OwinStartup(typeof(WebAPI.Startup))]
namespace WebAPI
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
ConfigureOAuth(app);
WebApiConfig.Register(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
}
public void ConfigureOAuth(IAppBuilder app)
{
OAuthAuthorizationServerOptions
OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(60),
Provider=new ApplicationOAuthProvider(),
//AuthenticationMode = AuthenticationMode.Active
};
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions {
Provider = new OAuthBearerAuthenticationProvider()
}
);
}
}
}
控制器在请求中添加承载令牌后检查授权呼叫。
public class TokenTestController : ApiController
{
[Authorize]
public IHttpActionResult Authorize()
{
return Ok("Authorized");
}
}
答案 1 :(得分:-2)
安装以下软件包
Microsoft.Owin.Host.SystemWeb