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

时间:2019-06-20 00:58:24

标签: azure-active-directory

sysret实现中包含clientIdtenantId是否安全?我相信我读过Joonas Westlin所说的嵌入ClientId很好(我现在找不到帖子)。

它在库中有一个地方,所以看起来还可以:

msal.js

然而,有人认为这样的识别信息应该保密。

1 个答案:

答案 0 :(得分:0)

简短答案:,可以安全地添加clientIdtenantId

您的担心是正确的,因为在基于JavaScript的应用程序(如SPA的应用程序)中,您输入的任何信息都可能向用户公开,并且可能被滥用。尽管tenantIdclientId不是这样的信息,但是client secretkeys还是很敏感的,应该避免。

tenantId可以作为OpenID Discovery文档的一部分公开提供给租户。您可以使用此格式的网址访问它

https://login.microsoftonline.com/{tenantID or tenantDomain}/v2.0/.well-known/openid-configuration

clientId是您的应用程序注册的标识符。要回答有关包含它的问题。.clientId本身并不能建立应用程序的身份,因此,您还必须同时拥有client secret才能使用应用程序的身份。

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

此处是Microsoft隐式授权流程的指南,该流程通常是JavaScript / SPA应用所使用的流程-Microsoft identity platform and Implicit grant flow

以下是关于clientidtenantId的类似SO帖子,并有很好的解释- Are the Azure Client Id, Tenant, and Key Vault URI considered secrets?

我无法迅速找到您提到的Joonas Westlin的帖子,但是Joonas关于clientId的建议照常是正确的。