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

Dho*_*gin 3 angularjs adal adal.js

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

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

例如.

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

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

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

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

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

Kar*_*hik 5

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

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

  • 因此,即使恶意客户端尝试使用您的clientid和租户ID,用户也会在身份验证后重定向回注册的URI(这是您的应用),而不是恶意网站
  • 在隐式流程中,应用程序不会收集任何用户名/密码,IDP/OP(即AAD)管理此部分 - 因此用户凭据也不会受到损害

**对于其他流类型(授权代码,客户端凭证等),我们有一个名为客户端密码和ClientID的东西.这不应该暴露给公众客户.