无论用户是否登录,如何在Angular / .NET Core 2.0应用程序中保护所有api调用

时间:2018-01-18 06:13:39

标签: angular asp.net-core jwt

我已经通过这里的优秀教程https://fullstackmark.com/post/13/jwt-authentication-with-aspnet-core-2-web-api-angular-5-net-core-identity-and-facebook-login建立了一个带有.net核心2.0的Angular 5网站,该网站发布了用于验证API请求的JWT令牌。

一切正常,用户登录,然后获得一个令牌,该令牌作为每个API请求的授权标头发送。

我的问题是,无论用户是否登录,我如何保护我网站中的所有api请求?

如果我有/ api / articles这样的请求获得所有文章,我希望网站的匿名访问者能够通过Angular前端访问它,但我不想要人们只是按照API来获取数据。

1 个答案:

答案 0 :(得分:1)

您可以使用OpenIDConnect / OAuth2来识别您的客户端,而无需您的用户登录。客户端我指的是Angular应用程序。

这个想法是您的应用使用client_credentials授权进行身份验证。对于此流程,不需要用户交互。客户端从身份验证服务器获取access_token,,包括资源所需的范围。 Here是与IdentityServer4一起使用的示例。

这可以保护你api并防止它被直接瞄准。但是,这并不能保证用户无法从请求中读取令牌并在没有应用程序的情况下使用它。

但是如果你将它与AntiForgeryTokens(也用于GET)结合起来并使access_tokens变得短暂,那么这肯定是不值得的。

用户登录后,您可以切换到包含用户信息的新access_token。