在使用adal / adal-angular.js时,是否存在安全问题,在客户端代码中暴露clientId和租户

我正在我们的应用程序中实现AAD单点登录,我们将使用adal.js / adal-angular.js库和MEAN堆栈应用程序 . 初始化库的一部分是调用init()并提供tenant和clientId

adalProvider.init(
  {
    tenant: "mycompany.onmicrosoft.com",
    clientId: "05bdd8d7-XXXX-XXXX-XXXX-5f2769f8b9b6"
  },
  $httpProvider
  );

例如 .

如果有人查看源并获取租户和clientId,他们可以在他们自己的应用程序中以某种方式恶意使用它吗?

AzureAD是否检查请求来自的URL并阻止它,如果它不是配置的登录URL?

似乎clientId更像是一个公钥,但是如果应用程序触发AzureAD身份验证所需的仅有2件事情是租户和clientId,那些在源代码中暴露客户端,有人可以使用它们来创建钓鱼网站如果请求被重定向回其站点X而不是原始站点,则X或抓取id_tokens

Azure是否依赖于应用程序设置中的已配置设置并防止这种情况发生?

我仍然掌握OpenID Connect和OAUTH 2.0的更好点,如果这个问题有明显的答案,请原谅我 .

回答(1)

2 years ago

Adal.js使用隐式流(根据OpenID connect / oAuth 2规范)并公开ClientID(和AAD的租户ID)不会带来任何安全风险 .

在Azure AD管理面板中注册客户端时,我们为客户端指定重定向URI . 这是应用程序URL,用户将在成功进行身份验证后重定向 .

  • 因此,即使恶意客户端尝试使用您的clientid和租户ID,用户也会在身份验证后重定向回注册的URI(这是您的应用),而不是恶意网站

  • 在隐式流程中,应用程序也不会受到损害

**对于其他流类型(授权代码,客户端凭据等),我们有一些称为客户端密码和ClientID . 这不应该暴露给公共客户 .