OAuth承载令牌不适用于WebApi

时间:2018-03-14 11:12:39

标签: c# asp.net-web-api oauth owin

我经历了很多文档,但似乎我的问题很奇怪。 我已经配置了Oauth,但我无法获得持有者令牌。每当我点击api获取令牌时,我得到200但没有回复(我期待不记名令牌)。以下是配置:

ThreadPoolTaskExecutor

现在当我启动APi并点击/令牌时,我得到如下:

API Request

2 个答案:

答案 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