在没有身份验证的情况下保护net.core api

时间:2017-11-01 11:27:03

标签: asp.net-core asp.net-core-webapi

我需要使用net.core为移动(Ionic)应用创建一个web api。 此应用程序的一部分,无需经过身份验证即可查看产品列表。

我的问题是:

我需要创建一个web api,列出这些产品,但是,用户不需要登录应用程序,但我希望我的应用程序可以使用此api而不是对所有人开放(只是我的应用程序可以消耗)。

有可能吗?如果是的话,我需要做什么?

由于

1 个答案:

答案 0 :(得分:2)

你可以做的唯一方法是让你的应用程序可以使用API​​,而不会让它暴露给世界范围内的身份验证,就是将它保持在内部,即与你的网站在同一个局域网上和防火墙后面。这通常是首选的方法,无论如何,如果它不是公共消费,就好像它是公开的那样,无论是否需要认证,总有一些潜在的违规行为。

然而,这种方法的一个缺点是,您无法利用任何外部通信 - 例如AJAX或您的方案中的移动应用程序。因此,如果您需要能够通过移动应用程序访问它,则无法以这种方式实现它,这意味着您必须实施身份验证层来保护它。没有其他选择。

您也可以采用某种混合方法。如果某些API终结点永远不应公开访问,您可以将API应用程序拆分为外部和内部部分,然后将内部内容保留在内部,只暴露移动应用程序功能绝对必需的API。但是,对于任何公开的内容,您都需要实现一个身份验证层,否则它将是开放的。

也就是说,身份验证不一定是最终用户身份验证。您只需要将您的移动应用程序授权为客户端。通常,您可以通过客户端密钥身份验证来执行此操作,其中应用程序被赋予客户端ID和密码。客户端将其提交给auth端点并获取令牌。然后,该标记将在Authorization标头中传递给需要它的请求。所有这一切对您的最终用户来说都是无缝的,他们不需要实际的物理登录。