【问题标题】:AAD B2C Get optional custom propertiesAAD B2C 获取可选的自定义属性
【发布时间】:2019-05-11 06:38:40
【问题描述】:

通过 AAD B2C 在我的应用程序中设置注册时,我遇到了一个奇怪且非常意外的行为。 我们在注册政策中设置了一些自定义(可选)属性。我们想要的是让我们的客户在他们可以/想要的情况下在此时提供他们,或者如果需要,稍后通过我们的用户管理页面添加他们。

当用户创建一个本地 B2C 帐户并填充所有自定义属性时,我可以将它们取回并随意编辑它们。 但相反,如果他没有填写任何自定义属性,我以后就无法取回它们。

在屏幕截图中,我希望所有客户都拥有完全相同的属性计数,无论这些属性是否已设置...

注册是在我们的 Angular 前端使用 msal 完成的。 然后使用 B2CGraphClient 在我们的 Asp.net Core2 Api 中检索属性(如此处所述:https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet

GetAllProperties:
await client
    .GetAllUsers($"$filter=signInNames/any(x:x/value%20eq%20%27{userMail}%27)")
    .Map(res => JObject.Parse(res)
        .Descendants()
        .OfType<JProperty>()
        .Select(x => (x.Name, x.Value.ToString()))
        .ToList());

如果我无法取回这些属性,有没有办法以编程方式添加它们?

【问题讨论】:

    标签: c# azure-ad-b2c adal msal


    【解决方案1】:

    如果属性属性的属性值设置为 null,则属性属性不会写入 User 对象(或者,it is removed from the User object if it has been previously set )。

    如果您希望将属性属性写入 User 对象,那么我建议您将其属性值设置为默认值,而不是 null

    【讨论】:

    • 这显然是最好的方法,但是注册是在注册政策中定义的外部页面上完成的,我们的前端开发人员告诉我他无法控制它
    • 然后我可以自己从后面写扩展值,但格式为:“extension_ab603c56068041afb2f6832e2a17e237_skypeId”:“jimbob.skype”,我不知道从哪里得到中间的 guid。用户的每个分机似乎都是一样的,所以我可以从另一个分机获取 guid,但如果他没有指定任何...。
    • 嗨@XavSc 对于内置策略,自定义属性/扩展属性注册到the b2c-extensions-app app,因此您必须使用此应用程序的应用程序客户端 ID 作为“guid”值扩展属性名称。
    • 这是一个奇怪的行为......我真的不明白他们为什么要这样构建它,但现在我知道这个 guid 来自哪里,我想我可以通过一个丑陋的设计来欺骗我的出路…非常感谢
    猜你喜欢
    • 2021-05-04
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多