Oauth 2.0 无需用户登录的Javascript客户端的IdentityServer4隐式流

Oauth 2.0 无需用户登录的Javascript客户端的IdentityServer4隐式流,oauth-2.0,identityserver4,openid-connect,Oauth 2.0,Identityserver4,Openid Connect,我有一个使用Javascript(ReactJS)构建的购物车应用程序。该应用程序将列出所有产品,将它们添加到购物车并执行结账 当用户到达站点时,Javascript客户端将调用API以获取产品列表、类别等。当有人单击产品时,API还将提供产品详细信息 我决不要求用户登录到系统。我也不能保持API打开。我们使用IdentityServer4来管理API 我不能在这里使用客户端凭据流(这适用于机器到机器的流),因为我不能在Javascript中保守秘密 我不能使用隐式流,因为它在用户登录的主体上工

我有一个使用Javascript(ReactJS)构建的购物车应用程序。该应用程序将列出所有产品,将它们添加到购物车并执行结账

当用户到达站点时,Javascript客户端将调用API以获取产品列表、类别等。当有人单击产品时,API还将提供产品详细信息

我决不要求用户登录到系统。我也不能保持API打开。我们使用IdentityServer4来管理API

我不能在这里使用客户端凭据流(这适用于机器到机器的流),因为我不能在Javascript中保守秘密

我不能使用隐式流,因为它在用户登录的主体上工作,而我根本不需要用户登录

我应该使用什么流?有没有一种方法可以在不需要用户登录的情况下更改隐式流以使其工作

使用API密钥是更好的方法吗


任何反馈都会很棒。

您不能更改隐式流,它实际上是一个用户登录流

我想你需要考虑一下你想保护什么

您需要允许所有人(匿名)调用一些方法:f.e.GetProduct。
您需要保护具有登录要求(如签出)的敏感方法。

如果不需要提供凭据,您想保护什么?只需保护那些必须通过用户登录进行保护的方法,并保持诸如getproducts和getproducts details之类的方法处于打开状态。