ASP.NET 5 OAuth 重定向 URI 不使用 HTTPS

2024-04-30

我正在复制社会样本 https://github.com/aspnet/Security/tree/1.0.0-beta4/samples/SocialSample但尝试使用此处未显示的不同 OAuth 提供程序,所以我有一些如下代码:

app.UseOAuthAuthentication("test", options =>
{
     options.ClientId = "xxx";
     options.ClientSecret = "xxx";
     options.AuthorizationEndpoint = "xxx";
     options.TokenEndpoint = "xxx";
     options.CallbackPath = new PathString("/signin-test");
});

我的应用程序在终止 SSL 的反向代理后面运行。我的redirect_uri 然后变成类似的东西http://myapp.com/signin-test http://myapp.com/signin-test当我需要它的时候https://myapp.com/signin-test https://myapp.com/signin-test.

应用程序只知道 X-Forwarded-Proto HTTP 标头是否设置为“http”或“https”,但似乎没有检测到。

有没有办法强制 CallbackPath 使用 HTTPS,无论请求是否使用?或者还有其他方法可以实现这一点?

我尝试将所有请求重定向到 HTTPS,但这没有帮助:

app.Use(async (context, next) =>
{
    if ("https".Equals(context.Request.Headers["x-forwarded-proto"]))
    {
        await next();
    }
    else
    {
        var withHttps = "https://" + context.Request.Host + context.Request.Path;
        context.Response.Redirect(withHttps);
    }
});

推荐的方法是手动更改context.Request.Scheme回来https代替http在调用管道的其余部分之前(await next()):

app.Use(next => context => {
    if (string.Equals(context.Request.Headers["X-Forwarded-Proto"], "https", StringComparison.OrdinalIgnoreCase)) {
        context.Request.Scheme = "https";
    }

    return next(context);
});

仅供参考,ASP.NET 团队目前正在开发一个可以自动执行此任务的中间件:https://github.com/aspnet/BasicMiddleware/pull/1/files https://github.com/aspnet/BasicMiddleware/pull/1/files

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET 5 OAuth 重定向 URI 不使用 HTTPS 的相关文章

  • 实体框架 - 实体类型之间的关联已被切断问题

    您好 当我尝试删除 绑定 表中的一行时 我遇到了实体框架问题 这些表看起来像这样 Table Users public class UserEntity BaseEntity Required MaxLength 30 public str
  • 如何在Azure功能中添加razor视图文件?

    我正在创建一个应用程序 它是 azure 函数项目 我想在该项目中使用 Razor 视图 我应该在 azure 函数中使用任何模板引擎吗 得益于一些方面的进步剃刀之光项目 https github com toddams RazorLigh
  • EF Core 模型构建约定

    在 EF6 中 可以在模型构建期间根据属性类型定义约定 就像这样 public interface IEntity Guid Id get public class MyEntity IEntity public Guid Id get s
  • 使用 JWT 通过 Asp.net core 进行 GraphQL 身份验证

    我正在使用 NET 的 GraphQL https www nuget org packages GraphQL 2 0 0 alpha 912graphql 的包 但我无法理解如何在 graphql 查询或突变中使用 JWT 进行身份验证
  • 实体框架7审计日志

    我正在将一个旧项目移植到 ASP NET 5 和 Entity Framework 7 我使用数据库优先方法 DNX 脚手架 来创建模型 旧项目基于Entity Framework 4 审计跟踪是通过重写实现的SaveChanges的方法D
  • IClaimsTransformation 未触发

    我尝试过实施一个IClaimsTransformation我在 ASP NET CORE 3 1 Web 应用程序中找到的类 public class ClaimsTransformer IClaimsTransformation publ
  • .Net Core Nuget Package - 将文件复制到包消费者 wwwroot

    我有一个 Net Core 2 2 库项目 该项目包含的所有内容都是一堆静态文件 其中 构建操作 设置为内容 该项目的唯一目的是构建到 Nuget 包中 并让任何消费者将包含的内容添加到他们的wwwroot folder 不幸的是 当查看解
  • 将授权放在服务层而不是Web API层

    我正在使用 NET Core Web API 构建 REST API 我的控制器只是将请求转发到服务层并返回结果 HttpPost nameof Create public async Task
  • 如何更改.net core的URL后缀?

    我怎样才能有以下路线 http localhost 4413 abc 以及以下路线 http localhost 4413 abc html 两者都返回相同的控制器方法 使用 NET Core MVC 听起来您想要两个后缀来达到相同的控制器
  • system.web.http.HttpError 的.Net 标准/核心版本

    从 net Framework 迁移到 net Standard Core 时 我遇到了 HttpError 类 除了兼容性垫片之外 我在 net core standard 中找不到任何等效项 这只是一个临时解决方案 不知道官方有没有替代
  • 我们需要依赖注入的接口吗?

    我有一个 ASP NET Core 应用程序 该应用程序有一些帮助程序类可以完成一些工作 每个类都有不同的签名方法 我在网上看到很多 net core 示例 它们为每个类创建接口 然后向 DI 框架注册类型 例如 public interf
  • ASP Net Core 属性路由和双正斜杠

    正如所指出的here https stackoverflow com a 20524044 3129340 URL 中包含双斜杠是有效的 我有一个使用属性路由的 ASP Net Core 项目 一个名为GroupController用于处理
  • 在 ASP.NET Core 的中间件中注入服务

    我想根据 HTTP 标头值注入服务 所以我有 2 个类 DbDataProvider 和 InMemDataProvider 它们都是从 IDataProvider 实现的 每当进行 API 调用时 客户端都会传递一个标头 该标头确定是需要
  • Docker .Net 6 错误程序不包含适合入口点的静态“Main”方法

    我正在尝试构建我的 docker 映像 但收到此错误 错误CS5001 程序不包含适合入口点的静态 Main 方法 6GAG WebApi 6GAG WebApi csproj 我的 1 个解决方案中有 3 个项目 1 webapi 1个前
  • 使用单元测试项目中定义的 Startup 类时.NET Core TestServer 返回 404

    我有一个基本的 net core api web 应用程序和一个使用 TestServer 发出 http 请求的单元测试项目 我有一个 TestStartup 类 它是 api 项目中 Startup 类的子类 如果 Startup 类位
  • ASP.NET Core MVC防伪

    尝试在核心 mvc 项目中打开防伪功能 但没有成功 做了什么 添加过滤器以自动检查每个 POST 请求的防伪令牌 services AddMvc o gt o Filters Add new AutoValidateAntiforgeryT
  • 如何从 Main 中获取 IConfiguration?

    以下仅用于说明目的 我有一个secrets json包含以下内容 Message I still know what you did last summer 我需要使用以下播种器为数据库播种 public static class Seed
  • 在project.json .Net Core中本地管理nuget

    我不想依赖 nuget 服务来下载依赖项 我想在我的 Net Core 应用程序中本地下载并使用 nuget 包 是否可以 方法与之前相同 打开您的NuGet config https docs nuget org consume nuge
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le

随机推荐