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

时间:2018-04-15 16:44:44

标签: azure-ad-b2c

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

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

2 个答案:

答案 0 :(得分:2)

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

  

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

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

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

  

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

不太可能回复网址会阻止此*。 这是您提到的值的关键

来自Azure Portal

  

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

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

不幸的是,使用B2C的SPA演示没有很好的官方示例,但我们仍然可以查看WingTip Games demo(它使用Auth代码流,而不是隐式流程)

sign-in link。我们可以在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回调
  • RESPONSE_TYPE =代码%20id_token%20token
  • 范围 =的OpenID%20profile%20https%3A%2F%2Fb2ctechready.onmicrosoft.com%2Fwingtipb2c%2FBilling.Read%20https%3A%2F%2Fb2ctechready.onmicrosoft.com%2Fwingtipb2c%2FMusic。读
  • response_mode = form_post
  • 随机数= 636594241776916748.Y2FmOGUxYmEtZWQ4ZS00YjAxLWJkZDQtNTMwOGNjMGRhNGI0ZGE0YjU4YjItZDljNS00MDcwLWJhMTgtMmIzMjdhY2MwZjZk
  • client_assertion_type =瓮%3Aietf%3Aparams%3Aoauth%3Aclient断言型%3Ajwt承载
  • client_assertion = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ey ...

答案 1 :(得分:0)

我认为发布Angular客户端和其他查看页面源的人不会有任何风险。

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