Azure AD B2C:无法将公司名称公开为令牌

2023-12-21

我使用 Azure AD B2C 和自定义策略来管理用户并提供登录体验。我注意到有一个内置(不是自定义扩展)属性名称companyName,我正在使用用户的公司信息进行更新。我可以通过图形 API 更新此字段值并分别检索它。更新此值后,我尝试将其包含在声明中并发送到客户端应用程序,但是我遇到了问题。我已确保在 TrustFrameworkBase 政策中包含如下声明

<ClaimType Id="companyName">
        <DisplayName>companyName</DisplayName>
        <DataType>string</DataType>
</ClaimType>

此外,我还更新了 AAD-UserReadUsingObjectId 技术配置文件,该配置文件负责进行图形调用(身份验证成功后)并获取所有用户属性。这是 AAD-UserReadUsingObjectId 技术配置文件的定义

<TechnicalProfile Id="AAD-UserReadUsingObjectId">
          <Metadata>
            <Item Key="Operation">Read</Item>
            <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
          </Metadata>
          <IncludeInSso>false</IncludeInSso>
          <InputClaims>
            <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
          </InputClaims>
          <OutputClaims>
            <!-- Optional claims -->
            <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
            <OutputClaim ClaimTypeReferenceId="displayName" />
            <OutputClaim ClaimTypeReferenceId="mobile" />
            <OutputClaim ClaimTypeReferenceId="country" />
            <OutputClaim ClaimTypeReferenceId="postalCode" />
            <OutputClaim ClaimTypeReferenceId="state" />
            <OutputClaim ClaimTypeReferenceId="company" />
            <OutputClaim ClaimTypeReferenceId="companyName" />
            <OutputClaim ClaimTypeReferenceId="surname" />
            <OutputClaim ClaimTypeReferenceId="givenName" />
            <OutputClaim ClaimTypeReferenceId="email" />
            <OutputClaim ClaimTypeReferenceId="objectId" />
            <!--Adding custom attribute start-->
            <OutputClaim ClaimTypeReferenceId="otherMails" />
            <OutputClaim ClaimTypeReferenceId="extension_UserGuid" />
            <OutputClaim ClaimTypeReferenceId="extension_StatusFlag" />
            <OutputClaim ClaimTypeReferenceId="extension_EZUserName" />
            <OutputClaim ClaimTypeReferenceId="CurrentTime" />
            <!--Adding custom attribute end-->
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="GetSystemDateTime" />
          </OutputClaimsTransformations>
          <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

最后,我将此 companyName 声明包含在用户旅程输出声明中。

即使完成所有这些操作后,我注意到 companyName 声明并不在 azure AD B2C 返回的令牌内。 为了进一步排除故障,我为我的策略启用了应用程序洞察,并且观察到了一个奇怪的行为。

当 Azure AD B2C 在执行时进行图形调用时AAD-UserReadUsingObjectId技术概况它形成一个类似于下面的查询https://graph.windows.net/f17d6207-7c3a-4d29-b802-ad5429b2a8d8/users/77669822-8034-4666-9800-8b614c0ccbfc?api-version=1.6-integrationOnly https://graph.windows.net/f17d6207-7c3a-4d29-b802-ad5429b2a8d8/users/77669822-8034-4666-9800-8b614c0ccbfc?api-version=1.6-integrationOnly并且此图形 api 调用的输出根本不包含 companyName 属性,但是当我使用我的应用程序 id 和 Secrete 进行类似查询的图形 api 调用时,我确实在响应中看到了 companyName。 Azure AD B2C 调用的查询与我调用 api url 中的最后一部分的查询的唯一区别。 Azure AD B2C 有-仅集成最后我没有。我不确定为什么当 Azure AD B2C 执行与我执行时图形 API 调用响应不同。

我可以通过简单地添加一个新的自定义扩展字段并使用它而不是 companyName 来解决这个问题,但我的观点是为什么我应该在开箱即用时创建一个自定义属性,更重要的是它需要我修复大约 100 万个现有用户。 有没有人遇到过此类问题。任何帮助都会很棒!

提前致谢!


CompanyName 是 O365 内置属性。如您所见,B2C 在后端使用仅集成 api 版本进行自己的调用。唯一的解决方案是使用扩展属性。用于修补用户的脚本可以在大约 12 小时内修复 100 万用户。 使用自定义策略时,请坚持使用您自己的自定义属性,尝试使用默认属性名称并没有真正的优势,只是有时您会发现缺点。自定义策略只需要您将属性名称声明为extension_,它的工作方式就像任何内置属性一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure AD B2C:无法将公司名称公开为令牌 的相关文章

  • 获取实体的请求。attribute == @"somevalue"

    如何设置提取请求以仅从具有一个特定值的实体属性中提取数据 这是我之前使用过的基本代码 void fetchResults NSFetchRequest fetchRequest NSFetchRequest fetchRequestWith
  • 如何从控制器调用构造函数中具有参数(接口)的属性

    public class HMACAuthenticationAttribute Attribute IAsyncAuthorizationFilter public HMACAuthenticationAttribute IUser us
  • 如何使用必须包含空格的 title~= 进行 CSS 属性选择器? [复制]

    这个问题在这里已经有答案了 我有以下选择器 post link title Corporate 现在 我需要只选择标题仅在开头而不是标题中其他位置包含 Corporate 一词的元素 所以我有两个选择 1 创建一个仅检查标题开头的选择器 然
  • 尽管不在形式中,但 Rails 属性会发生变化

    我有 Rails 应用程序 用户可以在其中互相分配任务 每个任务都有一名分配者和一名执行者 默认情况下 任务创建者 当前用户 始终是分配者 分配者和执行者都可以编辑同一个任务 我的问题如下 假设 user id 2 是分配者 user id
  • 如何使用增量值向 Pyspark 中的 DataFrame 添加列?

    我有一个名为 df 的 DataFrame 如下所示 Atr1 Atr2 Atr3 A A A B A A C A A 我想向其中添加一个具有增量值的新列并获取以下更新的 DataFrame Atr1 Atr2 Atr3
  • 如何使用 Jquery 设置输入字段的 Name 属性?

    快速提问 我想知道如何才能实现这一点 好的 我有一个像这样的输入字段
  • Selenium RC:如何检查元素是否具有给定属性?

    我有一些带有onclick属性和一些没有属性 我想检查指定的元素是否具有onclick属性 我怎样才能做到这一点 getAttribute 当有属性值时返回该属性值 如果没有 它会抛出 RuntimeException 并停止测试 即使我将
  • Xstream:删除类属性

    我该如何删除类 某事 Xstream 中的属性 我使用带注释的 Xstream 我读了它的代码 发现你的类不是mapper defaultImplementationOf fieldType 它会为你添加默认的类属性 除非类属性名称为nul
  • C# - 使用 Linq 获取 Attribute 的属性

    我有一个属性 它本身就有属性 我想访问这些属性之一 布尔值 并检查它是否正确 我能够检查属性是否已设置 但这就是全部 至少对于 linq 来说是这样 属性 public class ImportParameter System Attrib
  • 如何从 JtextPane 获取样式?

    我有一个带有格式化文本的 JtextPane 我需要复制完整的样式和属性 从此文本将其传输到另一个 JtextPane 有示例或代码片段吗 看看它是如何工作的 好的 这是我找到的代码 我做了一些更改 import java awt impo
  • 使用 Azure AD B2C 登录 Xamarin Android 应用

    经过一周的研究可与 Azure AD B2C 一起使用 Xamarin 以 Android 平台 而不是 Xamarin Forms 为目标的身份验证原理后 我终于寻求一些建议 我有一个带有 登录 按钮的活动 我想通过按钮的触摸事件登录到
  • 如何授权 Swagger 使用 MS Graph API

    我们正在为 MS Graph API 构建 Web API 包装器 我想使用 Swagger 来测试我的 API 但我无法正确配置 我不断收到错误请求 但没有其他线索 我无法在这台公司笔记本电脑上安装 Fiddler 或其他工具来帮助我进行
  • 如何在 UML 中正式记录 C# 属性?

    在 UML 类图中记录类的 C 属性的正确方法是什么 我还没有决定这是否是我的答案 但我想我会把它扔在那里以便讨论 这看起来可以接受吗 它是属性类型的实例 其中元数据值放入下面的标记值中 我刚刚弄清楚如何添加自定义立体类型 该箭头只是一个标
  • 使用 PHP DOMDocument 更改标签属性值

    我想用 PHP DOMDocument 更改标签属性的值 例如 假设我们有这行 HTML a href http foo bar Click here a 我将上面的代码加载到 PHP 中 如下所示 dom new domDocument
  • Jquery 点击时在多个图像之间切换

    我正在尝试使用 jquery 在单击图像后在三个图像之间切换 单击第三张图片后 它将切换回第一张图片 有没有一种方法可以使以下内容在两张以上的图片之间切换 并允许不止一次切换 jQuery document ready function c
  • 在 Java 中使用 Batik 检查和删除 SVG 中的属性

    这个问题基本上说明了一切 如何检查 SVG 是否具有 viewBox 属性 我正在使用蜡染库 我需要这个 因为我需要 至少 通知用户有一个 viewBox 属性 我可以删除它吗 使用 org w3c dom 类 您可以按照以下方式做一些事情
  • xml 模式属性参考

    我有这个 xml 模式
  • 如果产品重量超过1000克,如何以公斤为单位显示

    在 Storefront 主题中 我使用下面的代码将格式化重量从 1000g 更改为 1kg add action woocommerce after shop loop item title show weight 10 function
  • Android Studio:已选择组件,但属性编辑器显示“未选择组件”

    TL DR 虽然我可以直接在 XML 中编辑组件属性 健全性检查 我很理智 但属性检查器窗格声称没有选择任何内容 IE 这不起作用 我添加了一个CardView到主布局 它does显示在组件树和设计编辑器中 我选择的是CardView在 组
  • 从服务帐户使用 Graph API 发送电子邮件

    我正在 ASP NET Core 5 C 中执行任务 需要使用 Graph API 发送电子邮件 我参考了以下文章并在 Azure 试用帐户上进行了配置 并且能够发送电子邮件 使用 NET 通过 Microsoft Graph 发送电子邮件

随机推荐