我正在使用 .NET 8.0 中的新 Blazor 模板项目,并希望创建一个将从服务器渲染切换到 WASM 渲染的组件。该组件需要调用外部 API,该 API 在每个请求的授权标头中都需要一个令牌。
我的理解是,模板的客户端项目不能存储任何敏感信息,因为下载了 WASM,并且可以对 dll 进行逆向工程以使代码可见。同时,客户端项目需要访问令牌,以便能够成功调用 API。
这个问题有什么解决办法吗?我只能找到调用不受保护的 API 的教程。我发现一些 Microsoft 教程确实调用了受保护的 API,但他们方便地使用 API,例如 MicrosoftGraph,这些 API 已经与 Azure 深度集成,并通过用户登录进行身份验证。但如何从客户端项目安全地调用第三方 API?
您需要以某种方式对用户进行身份验证。所有其他选项都会导致几乎相当于在源代码中公开令牌并使其可供客户端访问的场景。
创建一个端点,仅向经过身份验证的用户颁发令牌。
此方法可确保令牌不会嵌入代码中,并且您可以控制其安全性。如果您不想要求用户身份验证,您仍然可以维护“半安全”环境。例如,您可以限制来自特定 IP 地址的访问。然而,正如我提到的,这不是一个强大的安全措施。