c# - 为 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# - 如何为 OpenApi 标头设置字符串列表
- excel - 将列添加到源表后刷新电源查询?
- bash - `set -x` 会导致 bash 打印到哪里?
- json - 如何在Ms access VBA中的记录集中更新之前验证数据
- cookies - 刮亚马逊。搜索结果从一台机器到另一台机器完全不同
- c# - 我可以在不编码的情况下使用 Response.Redirect 吗?
- node.js - 如何在节点 js 中获取 Firebase 云存储数据的地图?
- php - Laravel Eloquent Pagination,如何在使用过滤器分页之前计数?
- ruby-on-rails - 运行“rails s”后如何修复“不安全的世界可写目录/mnt/c in PATH, mode 040777”错误
- here-api - 在 HERE Maps API 中检测鼠标点击位置上的所有对象