安全 net.core api 无需身份验证
Secure net.core api without a authentication
我需要为移动 (Ionic) 应用创建一个 api 和 net.core 的网络。
此应用程序的一部分,无需验证即可查看产品列表。
我的问题是:
我需要创建一个网站 api 来列出这些产品,但是用户不需要登录应用程序,但我希望我的应用程序可以使用这个 api 并且不对所有人开放(只有我的应用程序可以使用)。
有可能吗?如果是,我需要做什么?
谢谢
使 API 可用于您的应用程序而不将其暴露给未经授权的世界的唯一方法是将其保留在内部,即与您的网站位于同一 LAN 上并在防火墙后面。这通常是首选方法,无论如何,如果它不是用于 public 消费,就好像它是 public 一样,无论是否需要身份验证,总会有一些违规的可能性。
不过,这种方法的一个缺点是您不能将其用于任何外部通信 - 例如 AJAX 或在您的场景中是移动应用程序。因此,如果您需要能够通过移动应用访问它,则不能以这种方式实现,这意味着您必须实现一个身份验证层来保护它。别无选择。
您也可以采用一种混合方法。如果某些 API 端点永远不应 public 访问,您可以将 API 应用程序拆分为外部和内部部分,然后将内部内容保留在内部,仅公开 API 是移动应用程序功能所必需的。同样,对于 public 的任何内容,您都需要实施身份验证层,否则它将完全开放。
也就是说,身份验证不必是 end-user 身份验证。您只需要将您的移动应用程序授权为客户端。通常,您会通过客户端密码身份验证来执行此操作,其中为应用程序提供客户端 ID 和密码。客户端将其提交给身份验证端点并取回令牌。该令牌然后在 Authorization
header 中传递给需要它的请求。所有这一切都与您 end-user 无缝衔接,不需要他们进行实际的物理登录。
我需要为移动 (Ionic) 应用创建一个 api 和 net.core 的网络。 此应用程序的一部分,无需验证即可查看产品列表。
我的问题是:
我需要创建一个网站 api 来列出这些产品,但是用户不需要登录应用程序,但我希望我的应用程序可以使用这个 api 并且不对所有人开放(只有我的应用程序可以使用)。
有可能吗?如果是,我需要做什么?
谢谢
使 API 可用于您的应用程序而不将其暴露给未经授权的世界的唯一方法是将其保留在内部,即与您的网站位于同一 LAN 上并在防火墙后面。这通常是首选方法,无论如何,如果它不是用于 public 消费,就好像它是 public 一样,无论是否需要身份验证,总会有一些违规的可能性。
不过,这种方法的一个缺点是您不能将其用于任何外部通信 - 例如 AJAX 或在您的场景中是移动应用程序。因此,如果您需要能够通过移动应用访问它,则不能以这种方式实现,这意味着您必须实现一个身份验证层来保护它。别无选择。
您也可以采用一种混合方法。如果某些 API 端点永远不应 public 访问,您可以将 API 应用程序拆分为外部和内部部分,然后将内部内容保留在内部,仅公开 API 是移动应用程序功能所必需的。同样,对于 public 的任何内容,您都需要实施身份验证层,否则它将完全开放。
也就是说,身份验证不必是 end-user 身份验证。您只需要将您的移动应用程序授权为客户端。通常,您会通过客户端密码身份验证来执行此操作,其中为应用程序提供客户端 ID 和密码。客户端将其提交给身份验证端点并取回令牌。该令牌然后在 Authorization
header 中传递给需要它的请求。所有这一切都与您 end-user 无缝衔接,不需要他们进行实际的物理登录。