在没有用户登录屏幕的情况下从 Javascript 调用安全的 REST api

IT技术 javascript reactjs oauth azure-active-directory
2021-05-09 05:39:27

您将如何从没有登录名的 Javascript 脚本应用程序调用安全的 REST api?

我有一个没有用户登录的 Javascript 应用程序 (React)。它需要调用一些使用 Oauth 的 REST api 服务(Azure Ad - WindowsAzureActiveDirectoryBearerAuthentication)。

这些 REST 服务启用了 CORS。

我还在 Azure Ad 中注册了我的 Web 应用程序。

问题是 javascript 应用程序需要调用https://login.microsoftonline.com/ {{tenantId}}/oauth2/token 来获取访问令牌。我发现无法为该 URL 启用 CORS。我的 JS 应用程序没有任何登录名,因此我无法在弹出窗口中显示登录屏幕或使用 adal js。

我想出的解决方案是将我的 Javascript 应用程序放在 NodeJS (Express) 中。JS 调用调用 login.microsoftonline.com 的 NodeJS 来获取令牌并在调用其他安全 REST 服务时传递它。

它工作得很好,但我认为这可能存在一些安全问题。

有没有更好的方法来设计这种应用程序?

1个回答

你正在做的是正确的方法。它使所有 Oauth 令牌在您的服务器上保持安全,而不必在客户端公开它们。

这是大多数 Oauth2 API 没有实现 CORS 的主要原因