我正在构建一个Angular SPA应用程序,并计划通过公共GitHub仓库开源。该应用程序将利用Azure AD B2C进行身份验证。如果我共享B2C数据点(客户端ID,租户,范围,策略名称),我会面临哪些风险?将这些配置选项包含在代码中是否是可接受的安全做法,还是应该将值移动到另一个存储机制并从源代码中移出?
独自思考,最大的风险似乎是其他人可以克隆应用程序并在本地(即他们自己的机器)对我的B2C实例运行它。不确定这是否真的很重要 - 也许这是一个好处,因为这是一个开源应用程序。
答案 0 :(得分:2)
无,假设您的应用将在互联网上托管。无论如何,这些信息都将被公开曝光,因为Angular代码需要知道这些值以正确地将用户发送到B2C(通过重定向或弹出窗口)。
将这些配置选项包含在代码中是否是可接受的安全做法,还是应该将值移动到另一个存储机制并从源代码中移出?
即使您将这些值移出Angular代码,您也必须进行休息调用以获取此信息,因此会将其公开。
此外,当用户在B2C网站上时,所有信息都在URL中。
...最大的风险似乎是其他人可以克隆应用程序并在本地(即他们自己的机器)对我的B2C实例运行...
不太可能回复网址会阻止此*。 这是您提到的值的关键。
来自Azure Portal:
重定向URI必须全部属于同一个域
由于您控制在Azure门户中设置回复网址,因此可以防止恶意网站造成伤害。
有一个例外;您可以拥有localhost和单个域的值。
不幸的是,使用B2C的SPA演示没有很好的官方示例,但我们仍然可以查看WingTip Games demo(它使用Auth代码流,而不是隐式流程)
见sign-in link。我们可以在URL
中看到以下内容答案 1 :(得分:0)
我认为发布Angular客户端和其他查看页面源的人不会有任何风险。
话虽如此,如果您在已发布的源代码中插入占位符,我相信它是一种更好的开发人员体验,因此开发人员可以用自己的值替换它们。