Azure AD / MSAL.js - 包含tenantId 是否安全?

Han*_*kCa 4 azure-active-directory

在实现中包含clientIdand是否安全?我相信我读到 Joonas Westlin 说嵌入 ClientId 很好(我现在找不到该帖子)。 tenantIdmsal.js

图书馆里有一个地方,所以看起来还可以:

this.msal = new UserAgentApplication(
                {
                    auth: {
                        clientId: this.clientId,
                        authority: `https://login.microsoftonline.com/${this.tenantId}`,
                        redirectUri: Uri + "/login",
                    },
Run Code Online (Sandbox Code Playgroud)

然而,人们会认为此类识别信息应该保密。

Roh*_*gal 7

简短回答:是的clientId,包含和是安全的tenantId

您的担忧是有道理的,因为对于基于 JavaScript 的应用程序(如 SPA),您输入的任何信息都可能会暴露给用户并可能被滥用。尽管tenantIdclientId不是此类信息,client secret但 或keys是敏感信息并应避免。

tenantId无论如何,作为租户的 OpenID Discovery 文档的一部分,可以公开获取。您可以使用此格式的 URL 访问它

https://login.microsoftonline.com/{tenantID or tenantDomain}/v2.0/.well-known/openid-configuration
Run Code Online (Sandbox Code Playgroud)

clientId是您的应用程序注册的标识符。要回答您对包含它的担忧……clientId单独并不能建立应用程序的身份,您client secret还需要拥有它,才能使用应用程序的身份。

因此,从安全角度来看,任何公共客户端应用程序(例如基于 JavaScript 的 SPA 甚至桌面本机应用程序)都不应该使用客户端密钥,因为这些应用程序无法安全地保存它并且可能会受到损害。机密只能由机密客户端(例如基于服务器的 Web 应用程序或后端守护进程)处理。

以下是 Microsoft 对隐式授权流程的指南,该流程通常是 JavaScript/SPA 应用程序使用的流程 - Microsoft 身份平台和隐式授权流程

这是一篇类似的 SO 帖子,clientidtenantId有很好的解释 - Azure 客户端 ID、租户和 Key Vault URI 是否被视为机密?

我无法很快找到您提到的 Joonas Westlin 的帖子,但 Joonas 的建议clientId一如既往地正确。


归档时间:

查看次数:

4605 次

最近记录:

6 年,10 月 前