在sysret
实现中包含clientId
和tenantId
是否安全?我相信我读过Joonas Westlin所说的嵌入ClientId很好(我现在找不到帖子)。
它在库中有一个地方,所以看起来还可以:
msal.js
然而,有人认为这样的识别信息应该保密。
答案 0 :(得分:0)
简短答案:是,可以安全地添加clientId
和tenantId
。
您的担心是正确的,因为在基于JavaScript的应用程序(如SPA的应用程序)中,您输入的任何信息都可能向用户公开,并且可能被滥用。尽管tenantId
和clientId
不是这样的信息,但是client secret
或keys
还是很敏感的,应该避免。
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
以下是关于clientid
和tenantId
的类似SO帖子,并有很好的解释- Are the Azure Client Id, Tenant, and Key Vault URI considered secrets?
我无法迅速找到您提到的Joonas Westlin的帖子,但是Joonas关于clientId
的建议照常是正确的。