首页 > 解决方案 > 为 OAuthAuthorizationServerProvider 启用 CORS

问题描述

我在 .net 4.6 上的 Owin 中有一个 WebAPI 项目。这个项目有几个 API。我们开始在这个项目中实现一个 OAuth 授权服务器。身份验证端点必须可从任何域访问,但不能从 API 访问。

如果我将下面的行添加到我的 Startup.cs 文件中

app.UseCors(CorsOptions.AllowAll);

该应用程序完美运行。但是,它允许所有 API 接收来自任何域的请求。

但是,我希望只有身份验证端点可以接收来自任何域的请求。但是由于我没有创建这些端点(它们不是控制器)而是通过 Owin 中间件创建的,所以我无法做到。

我在 Startup.cs 中的 AuthorizationServer

app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
     {
        TokenEndpointPath = new PathString("/auth/generatetoken"),
        AuthorizeEndpointPath = new PathString("/auth/authorize"),
        AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(60),
        AuthorizationCodeProvider = new AuthCodeProvider(),
        Provider = new MyAuthServerProvider()
     });

我只想允许这两个端点(/auth/generatetoken 和 /auth/authorize)接收来自任何域(CorsOptions.AllowAll)的请求。

我发现一些文章(文章 1文章 2)在实现 OAuthAuthorizationServerProvider 接口的类上放了注释,但它不起作用;代码甚至没有编译:

在此处输入图像描述

我不想为整个应用程序启用 CORS,我只想为这两个端点启用它。

标签: c#asp.net.netcorsowin

解决方案


推荐阅读