【问题标题】:How do I give only my client access to my API?如何只让我的客户访问我的 API?
【发布时间】:2023-04-02 20:52:01
【问题描述】:

我正在开发一个可供移动应用客户端使用的 REST Web API。我不希望任何其他客户端能够访问 API。我应该只需要移动应用程序使用的密码/令牌吗?有没有办法让人们通过反编译我的应用程序找到该密码?

【问题讨论】:

    标签: asp.net rest security asp.net-web-api2


    【解决方案1】:

    是的,您不能创建一个嵌入了秘密的应用程序并期望秘密保持秘密。

    如果您使用密钥(令牌、用户/通行证、私钥等)发布应用程序,则该信息在二进制文件中可用,并且有动机的人可以提取它。

    通常的做法是安装应用程序,然后让应用程序的用户登录,并为将来的请求存储唯一的凭据。

    【讨论】:

      【解决方案2】:

      您可以使用 OWIN OAUTH,其中客户端的用户需要进行身份验证,并且不记名授权令牌返回给客户端,该令牌必须传递给 WebAPI 上的所有安全请求(WebAPI 上的安全请求使用 Authorize属性)

      看看这个链接http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/#comments

      【讨论】:

      • 这看起来是一个很好的解决方案,而且该教程很有帮助。但是有动力的用户能否以某种方式拦截该承载令牌并使用它来提出自己的请求? HTTPS 会阻止这种情况吗?
      • @Jutanium 这听起来像是一个单独问题的好人选! :)
      • 好的...另外,用户的初始注册呢?这不能需要不记名令牌,否则应用程序将无法注册任何用户。但如果它没有不记名令牌,那么任何人都可以向我的 api 发送垃圾邮件并注册用户
      • 这是真的,但是您可以通过将用户发送到门户网站进行注册来处理注册,因此不会通过您的 API 公开注册,然后您可以在注册页面上使用“捕获”来防止注入攻击,你们可以在注册 API 路由上实现一些东西来防止这种攻击
      • 捕获是扭曲的图像,需要物理用户解释并输入代码以验证用户正在访问而不是“机器人”或脚本。
      猜你喜欢
      • 2020-02-07
      • 2016-04-06
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-21
      • 2020-10-26
      • 1970-01-01
      相关资源
      最近更新 更多