Angularjs 在使用adal/adal-angular.js时,是否存在在客户端代码中公开clientId和tenant的安全问题

Angularjs 在使用adal/adal-angular.js时,是否存在在客户端代码中公开clientId和tenant的安全问题,angularjs,adal,adal.js,Angularjs,Adal,Adal.js,我正在应用程序中实现AAD单点登录,我们将在平均堆栈应用程序中使用adal.js/adal-angular.js库。初始化库的一部分是调用init()并提供租户和clientId adalProvider.init( { tenant: "mycompany.onmicrosoft.com", clientId: "05bdd8d7-XXXX-XXXX-XXXX-5f2769f8b9b6" }, $httpProvider ); 比如说 如果有人查看源代码并

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

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

如果有人查看源代码并获取租户和客户端ID,他们会在自己的应用程序中恶意使用它们吗

AzureAD是否检查请求来自的URL,如果不是已配置的登录URL,是否将其阻止

似乎clientId更像是一个公钥,但如果应用程序触发AzureAD身份验证所需的两件事是租户和clientId,并且这些都是源代码中公开的客户端,则有人可以使用它们创建钓鱼网站X,或者在请求重定向回其网站X时获取id_令牌比原来的网站

Azure是否依赖于应用程序设置中的配置设置并对此进行保护


我仍在掌握OpenID Connect和OAUTH 2.0的一些细节,因此如果这个问题有一个明显的答案,请原谅我。

Adal.js使用隐式流(根据OpenID Connect/OAUTH 2规范),并且公开ClientID(以及AAD的租户id)不会带来任何安全风险

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

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

**对于其他流类型(授权代码、客户机凭据等),我们有一种称为客户机密码和ClientID的东西。这不应该向公众客户公开。

谢谢。我读过关于隐式授权流的文章,并在我的示例应用程序中多次配置了清单以允许它在AAD上运行,但我并没有真正理解它的含义。在检查了oauth 2.0的RFC之后,现在已经非常清楚了。基本上,隐式授权用于客户端web应用程序,如单页应用程序,访问令牌会立即发送,授权代码会被跳过。这将减少重定向和开销,并提供更好的用户体验。几乎没有更多的区别。我在回答中总结了重要的问题-