【问题标题】:Secure net.core api without a authentication无需身份验证的安全 net.core api
【发布时间】:2017-11-01 22:16:28
【问题描述】:
我需要使用 net.core 为移动(离子)应用程序创建一个 web api。
此应用程序的一部分,无需进行身份验证即可查看产品列表。
我的问题是:
我需要创建一个 web api 来列出这些产品,但是用户不需要登录应用程序,但我希望我的应用程序可以使用这个 api 而不是对所有人开放(只是我的应用程序可以消费)。
有可能吗?如果是,我需要做什么?
谢谢
【问题讨论】:
标签:
asp.net-core
asp.net-core-webapi
【解决方案1】:
您可以在不将其暴露给无身份验证的世界的情况下将 API 提供给您的应用程序的唯一方法是将其保留在内部,即与您的网站在同一个 LAN 上并在防火墙后面。无论如何,这通常是首选方法,如果它不用于公共消费,就好像它完全是公共的一样,无论是否需要身份验证,总是存在一些违规的可能性。
不过,这种方法的一个缺点是,您无法将其用于任何外部通信 - 例如 AJAX 或在您的场景中的移动应用程序。因此,如果您需要能够通过移动应用程序访问它,则无法以这种方式实现它,这意味着您必须实现一个身份验证层来保护它。没有其他选择。
您也可以采用一种混合方法。如果某些 API 端点不应该被公开访问,您可以将 API 应用程序拆分为外部和内部部分,然后将内部内容保留在内部,只公开移动应用程序功能绝对必要的 API。不过,同样,对于任何公开的内容,您都需要实现一个身份验证层,否则它将是完全开放的。
也就是说,身份验证不必是最终用户身份验证。您只需将您的移动应用程序授权为客户端。通常,您会通过客户端机密身份验证来执行此操作,其中为应用程序提供客户端 ID 和机密。客户端将其提交到身份验证端点并取回令牌。然后,该令牌在 Authorization 标头中传递给需要它的请求。这一切对您的最终用户来说都是无缝的,不需要他们实际登录。