Azure ad b2c Azure AD B2C-共享应用程序客户端Id的风险

Azure ad b2c Azure AD B2C-共享应用程序客户端Id的风险,azure-ad-b2c,Azure Ad B2c,我正在构建一个Angular SPA应用程序,并计划通过一个公共GitHub repo开源。该应用程序将利用Azure AD B2C进行身份验证。如果我共享B2C数据点(客户Id、租户、范围、策略名称),我将面临哪些风险?在代码中包含这些配置选项是一种可接受的安全实践,还是应该将这些值移动到另一个存储机制并从源代码中移出 就我个人而言,最大的风险似乎是其他人可能克隆应用程序并在本地(即他们自己的机器)针对我的B2C实例运行它。不确定这是否真的有什么大不了的-也许这是一个好处,因为这是一个开源应用

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


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

我不认为这比你发布Angular客户端和其他查看页面源代码的人更危险


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

,假设您的应用程序将托管在互联网上。这些信息将以任何方式公开,因为Angular代码需要知道这些值才能正确地将用户发送到B2C(通过重定向或弹出窗口)

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

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

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


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

不太可能,因为回复url将阻止此*这是您提到的要公开的值的关键

从:

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

由于您可以控制Azure门户中回复url的设置,因此可以防止恶意网站造成伤害

  • 有一个例外;您可以有一个localhost值和一个域


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

看这个。我们可以在URL中看到以下内容

  • 然后租户在url中(b2ctechready):
  • p=b2c\u 1a\u注册\u登录\u游戏(这是b2c政策)
  • 客户id=f327751f-477c-4df8-a174-f59786d99d9f
  • 重定向uri=https%3A%2F%2Fwingtipgamesb2c.azurewebsites.net%2Fb2c\u 1a\u注册\u登录\u游戏-回调
  • 响应类型=代码%20id\u令牌%20token
  • scope=openid%20profile%20https%3A%2F%2Fb2ctechready.onmicrosoft.com%2Fwingtipb2c%2FBilling.Read%20https%3A%2F%2Fb2ctechready.onmicrosoft.com%2Fwingtipb2c%2FMusic.Read
  • 响应模式=表单发布
  • nonce=636594241776916748.Y2FMOuxymetzWQ4ZS00YJAXLWJKZDQTNTMwogNjMgrHNGI0ZGE0YJU4YJITZDLJNS00MDCWJHMTTMMIZMY2MWZZK
  • 客户端断言类型=urn%3Aietf%3Aparams%3Aoauth%3Aclient断言类型%3Ajwt
  • 客户端断言=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ey