将clientId和tenantId包含在msal.js实现中安全吗?我相信我读过Joonas说嵌入ClientId很好(我现在找不到帖子)。
图书馆里有个放它的地方,所以似乎没问题:
this.msal = new UserAgentApplication(
{
auth: {
clientId: this.clientId,
authority: `https://login.microsoftonline.com/${this.tenantId}`,
redirectUri: Uri + "/login",
},然而,人们会认为这样的识别信息是保密的。
发布于 2019-06-20 02:07:13
简短的回答:是,包含clientId和tenantId是安全的。
您的关注是有道理的,因为对于基于JavaScript的应用程序(如SPA),您要输入的任何信息都可能暴露给用户,并且可能被滥用。虽然tenantId和clientId不是这样的信息,但是client secret或keys将是敏感的,需要避免。
tenantId作为租户OpenID发现文档的一部分是公开的。您可以使用此格式的URL访问它。
https://login.microsoftonline.com/{tenantID or tenantDomain}/v2.0/.well-known/openid-configurationclientId是应用程序注册的标识符。来回答你对包括它的担忧。clientId本身并不能建立应用程序的身份,您还需要同时拥有client secret,才能使用应用程序的标识。
因此,从安全的角度来看,任何公共客户端应用程序(比如基于JavaScript的SPA,甚至是桌面本地应用程序)都不应该使用客户端机密,因为这些应用程序不能安全地保护它,而且它可能会受到危害。机密只能由机密客户端处理,如基于服务器的web应用程序或后端守护进程。
下面是Microsoft对隐式授权流的指导,这通常是JavaScript/SPA应用程序- Microsoft identity platform and Implicit grant flow所使用的流。
下面是一个类似的关于clientid和tenantId的帖子,并给出了很好的解释-- Are the Azure Client Id, Tenant, and Key Vault URI considered secrets?
我无法很快找到你提到的Joonas的帖子,但是Joona关于clientId的建议和往常一样是正确的。
https://stackoverflow.com/questions/56677676
复制相似问题