如何使用API连接器和asp net core web API使用自定义声明来丰富Azure B2C令牌

How to enrich azure b2c token with custom claims using api connectors and asp net core web api(如何使用API连接器和asp net core web API使用自定义声明来丰富Azure B2C令牌)

本文介绍了如何使用API连接器和asp net core web API使用自定义声明来丰富Azure B2C令牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个用户流b2c_1_singupsingin1 我添加了一个API连接器,将其嵌入到此流和API调用的端点URL中。 二手文章: https://docs.microsoft.com/en-us/azure/active-directory-b2c/add-api-connector-token-enrichment?pivots=b2c-user-flow

从这篇文章中可以清楚地看出,API连接器作为发送自定义属性的HTTP POST请求来实现。

我的Web API有一个终结点,代码为:

[HttpPost("enrich")]
public IActionResult Enrich([FromBody] JsonElement body)
{
    var responseProperties = new Dictionary<string, object> //for example
    {
        { "version", "1.0.0" },
        { "action", "Continue" },
        { "postalCode", "12349" },
        { "userId", 123 } 
    };

    return new JsonResult(responseProperties) { StatusCode = 200 };
}

当我启动自定义流时,一切都正常工作,我到达API中的终结点。 但问题是JsonElement Body不包含自定义属性。里面我看到body.ValueKind = Undefined。 告诉我我做错了什么?

毕竟,我还想从我的数据库中添加一个带有一些值的自定义&UserID";声明。 以使其包含在后续发行的令牌中。上面的代码对此正确吗?

推荐答案

您的代码没有问题。只需在postalCode和UserID前面添加";Expansion_";。

    [HttpPost("log")]
    public IActionResult Log([FromBody] JsonElement body)
    {

        var responseProperties = new Dictionary<string, object> 
        {
            { "version", "1.0.0" },
            { "action", "Continue" },
            { "extension_Role", "admin" },
        };

        return new JsonResult(responseProperties) { StatusCode = 200 };
    }

在我的Azure AD B2C中,我有一个名为&角色&的自定义属性。

但在调试模式下,我看到对于所有自定义属性,扩展_被设置为前缀...

因此,通过将此内容添加到响应属性,它似乎起作用了。

这篇关于如何使用API连接器和asp net core web API使用自定义声明来丰富Azure B2C令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何使用API连接器和asp net core web API使用自定义声明来丰富Azure B2C令牌

基础教程推荐