Azure AD B2C - 共享应用客户端 ID 的风险



我正在构建一个Angular SPA应用程序,并计划通过公共GitHub存储库开源。该应用将利用 Azure AD B2C 进行身份验证。如果我共享 B2C 数据点(客户端 ID、租户、作用域、策略名称),我面临哪些风险?将这些配置选项包含在代码中是否是一种可接受的安全实践,或者我应该将这些值移动到另一种存储机制并从源代码中移出?

我自己考虑,最大的风险似乎是其他人可以克隆应用程序并在本地(即他们自己的机器)针对我的 B2C 实例运行它。不确定这是否真的是一件大事 - 也许这是一个好处,因为这是一个开源应用程序。

None,假设你的应用将托管在互联网上。 无论如何,这些信息都将公开,因为 Angular 代码需要知道这些值才能将用户正确发送到 B2C(通过重定向或弹出窗口)。

将这些

配置选项包含在代码中是否是一种可接受的安全实践,或者我应该将这些值移动到另一种存储机制并从源代码中移出?

即使您将这些值移出 Angular 代码,您也必须进行 rest 调用才能获取此信息,因此会公开它。

此外,当用户在 B2C 站点上时,所有信息都在 URL 中。


。最大的风险似乎是其他人可以克隆该应用程序并针对我的 B2C 实例在本地(即他们自己的机器)运行它......

不太可能,因为回复 URL会阻止这种情况*。这是你提到的价值观被暴露的关键。

从 Azure 门户:

重定向 URI 必须全部属于同一域

由于可以在 Azure 门户中控制回复 URL 的设置,因此可以防止恶意站点造成伤害。

  • 有一个例外;您可以具有本地主机和单个域的值。

    • https://localhost:44300
    • https://jwt.ms

不幸的是,没有一个使用 B2C 的 SPA 演示的良好官方示例,但我们仍然可以查看 WingTip Games 演示(它使用身份验证代码流,而不是隐式流)

请参阅此登录链接。 我们可以在 URL 中看到以下内容

  • 然后租户在网址(b2ctechready)中:https://login.microsoftonline.com/b2ctechready.onmicrosoft.com/oauth2/v2.0/authorize
  • p=b2c_1a_sign_up_sign_in_games(这是 B2C 策略)
  • client_id=F327751F-477C-4DF8-A174-F59786d99d9f
  • redirect_uri=https%3A%2F%2Fwingtipgamesb2c.azurewebsites.net%2Fb2c_1a_sign_up_sign_in_games-callback
  • response_type=代码%20id_token%20令牌
  • scope=openid%20profile%20https%3A%2F%2Fb2ctechready.onmicrosoft.com%2Fwingtipb2c%2FBilling.Read%20https%3A%2F%2Fb2ctechready.onmicrosoft.com%2Fwingtipb2c%2FMusic.Read
  • response_mode=form_post
  • nonce=636594241776916748.Y2FmOGUxYmEtZWQ4ZS00YjAxLWJkZDQtNTMwOGNjMGRhNGI0ZGE0YjU4YjItZDljNS00MDcwLWJhMTgtMmIzMjdhY2MwZjZk
  • client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
  • client_assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ey...

我认为这并不比您发布 Angular 客户端和查看页面源代码的其他人风险更大。

话虽如此,我相信如果在已发布的源代码中插入占位符,这样开发人员就可以用自己的值替换它们,这将是一种更好的开发人员体验。

最新更新