gpt4 book ai didi

c# - 如何保护 Web API 上的 Controller 仅供本地计算机使用

转载 作者:可可西里 更新时间:2023-11-01 08:17:37 27 4
gpt4 key购买 nike

我有一个使用 WebAPI、SignalR 的 ASP.NET MVC 网站。

我希望我的服务器(托管网站的同一台服务器)向 WebAPI Controller 发出 HTTP 请求 - 我希望这样做以便我可以连接到我网站的 SignalR 功能。

我想让网站用户无法访问 WebAPI Controller 上的方法,但服务器可以。

我查看了一般保护 WebAPI 请求的选项,似乎我可以使用以下选项:

  • 为每个请求发送用户名和密码,也就是基本身份验证
  • 生成“客户端证书”并随每个请求一起发送

这是仅有的两种听起来可行的方法,但我想知道如果请求来自本地主机(同一台服务器),使用这些方法是否有点过分。

这是不是太过分了,有没有更简单的方法来限制从本地机器到 WebAPI Controller 的 HTTP 请求?

最佳答案

如果您只想接受来自同一台机器的请求,您可以检查请求上下文的 IsLocal 属性 MSDN .

HttpRequest.Context.Request.IsLocal

然后您可以将其构建到自定义授权属性中并在全局注册它,从而在您的所有 Web API Controller 上强制执行要求。

public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Other Web API configuration code goes here

// This is a globally registered attribute
config.Filters.Add(new LocalRequestOnlyAttribute());
}
}

public class LocalRequestOnlyAttribute : AuthorizeAttribute
{
protected override bool IsAuthorized(HttpActionContext context)
{
return context.RequestContext.IsLocal;
}
}

关于c# - 如何保护 Web API 上的 Controller 仅供本地计算机使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30573517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com