如何使用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

查看:40
本文介绍了如何使用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令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆