-1

我正在使用Azure Active Directory来保护我的ASP.NET Core API和SPA应用程序。目前,我没有使用客户机密码,这对SPA应用程序来说很好,因为它可以在公共JavaScript中显示。SPA应用程序中的Azure Active Directory客户机秘密

如果我要将客户端密钥添加到其中一个API中,如何告诉Azure Active Directory我不想将我的SPA的客户端密钥用于其他应用程序,但是希望在我的其他API中使用它我正在向API调用API?

+0

您是否使用用户凭证来保护您的API? –

+0

@CuongLe是的,Azure AD重定向到登录页面,用户输入他们的登录信息并重定向回SPA应用程序。 –

+0

为什么不直接使用用户名/密码来获取令牌而不是使用客户端密钥? –

回答

1

在这种情况下,您的API需要是Azure AD中的独立应用程序。如果他们是同一个应用程序,客户端秘密将从任何地方工作。

虽然实际上,因为它是一个SPA,它可以使用秘密的唯一方法是通过AJAX,而Azure AD不支持CORS并阻止它。

即使它将来工作,它应该不用说,你不应该把你的客户端秘密在客户端代码。这包括Web应用程序中的前端JavaScript和移动应用程序中的代码。 (我知道这很清楚,但要确保其他人在后面阅读答案也能理解这一点。)有人可以相对容易地从那里获取秘密,然后如果你的应用程序对某些API有权限,正在发生。

+0

不使用SPA的秘诀在于它们最终会在浏览器中显示,对于加载SPA的所有人(包括攻击者)都是可见的;这与AJAX无关或者如何使用。 –

+0

是的,显然。 OP也很清楚。我只是简单地说,即使你想要,你实际上也无法做到这一点。无论如何,我会将其添加到答案:) – juunas

相关问题