首页 > 解决方案 > Azure 应用程序客户端 ID 是否可以安全地存储在前端?

问题描述

在 Microsoft 网站上,他们提供了多个示例,说明如何msal在 SPA 中使用 Azure AD 对用户进行身份验证。在所有这些示例中,它们Application (client) ID都以纯文本形式存储在代码或简单.json文件中。

我的问题是,鉴于存储在前端的所有内容都被认为是公开的,将应用程序配置简单地存储Azure (client) IDjson文件中是一种不好的做法吗?或者这会更好地存储在.env文件中吗?

这些是应用程序需要运行的详细信息:

AZURE_APP_CLIENT_ID=""
AZURE_APP_AUTHORITY=""
AZURE_APP_REDIRECT_URI=""
AZURE_APP_POST_LOGOUT_REDIRECT_URI=""

API_URI=""
API_AZURE_EXPOSED_SCOPE=""

标签: javascriptazurevue.jssecuritysingle-page-application

解决方案


好吧,OAuth RFC 将其定义为不是秘密:https ://www.rfc-editor.org/rfc/rfc6749#section-2.2

客户端标识符不是秘密;它向资源所有者公开,不得单独用于客户端身份验证。

当用户登录时,客户端 ID 无论如何都会在 URL 中可见。将它存储在前端是完全可以的。

当用户登录时,所有这些内容都在 URL 中可见:

  • Azure AD 租户 ID
  • 应用客户端 ID
  • 应用程序请求的范围(可以包括 AAD 中 API 的客户端 ID/应用 ID URI)
  • 应用重定向 URI

推荐阅读