如何使用AAD B2C令牌存储用户上下文

时间:2019-08-10 21:22:17

标签: javascript authentication azure-ad-b2c

我正在使用AAD B2C来保护JavaScript应用程序和支持Web服务。用户可能与多个公司相关联,所以我打算使用一个下拉菜单,并允许用户选择他们希望在哪个环境下进行操作。

后端Web服务需要接收“上下文” ...所以我觉得我需要在用户通过身份验证之后向AAD B2C令牌添加一个值...或者我需要回叫AAD具有某种价值的B2C。

我找不到任何文档来证明这是可能的。

这是受支持的用户流吗?

2 个答案:

答案 0 :(得分:1)

实现此方案的唯一方法是使用Custom Policies:在此方案中,消费者对您的方案中的多个租户具有各自的访问权限:

  1. 收集用户凭据并进行验证
  2. 调用REST API以发回以逗号分隔的用户可以访问的租约列表
  3. 在文本框中显示一个具有2个B2C声明的自声明页面。应该使用InputClaims填充2)中的逗号分隔列表。
  4. 在启用了JavaScript的情况下自定义此页面,使用JS渲染一个下拉框,其枚举来自3中的填充文本字段。
  5. 当用户从下拉框中选择时,使用JS将结果发送到另一个呈现的文本框中。
  6. 使用CSS隐藏2个文本框。
  7. 用户提交页面时,请使用ValidationTechnical配置文件将用户输入发送回REST API,以确保该值在其授权的租户列表内。
  8. 使用RelyingParty元素的Outputclaims部分将租户名称插入Token。
  9. 应用现在可以通过正确的访问权限知道要显示的租约。

答案 1 :(得分:1)

您不能简单地向令牌“添加值”。该令牌是由MS(而不是您的应用)创建并签名的。

但是您可以定义自定义声明,并将其包含在令牌中。假设您将其命名为 Context ,它将是用户有权访问的公司的ID或名称的列表。成功登录后,带有此声明的令牌将返回到您的js,您可以解析它以获取要显示在下拉列表中的单个项目(公司)。用户从下拉列表中选择了首选上下文之后,您可以将它作为一个额外的参数而不是作为令牌的一部分传递给后端Web服务。

可以通过Graph调用来管理Contexts属性/声明-我怀疑您不想让用户自己在其中添加任何他们想要的东西。