Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .net core 3-b2c角色身份验证-声明注入不起作用_C#_.net_Azure Ad B2c_Blazor Server Side_Asp.net Core 3.0 - Fatal编程技术网

C# .net core 3-b2c角色身份验证-声明注入不起作用

C# .net core 3-b2c角色身份验证-声明注入不起作用,c#,.net,azure-ad-b2c,blazor-server-side,asp.net-core-3.0,C#,.net,Azure Ad B2c,Blazor Server Side,Asp.net Core 3.0,我正在尝试将自定义声明注入AzureB2C声明,以使基于角色的授权生效 开发堆栈是: VS2019预览版16.3-.net核心3.0预览版9-Blazor服务器端。Azure应用程序服务。B2C电子邮件+LinkedIn 看起来这应该行得通,但至少在.NETCore3中不行 我还修改了建议的解决方案,改为使用OpenIDConnect方案和事件: services.PostConfigure<OpenIdConnectEvents>(AzureADB2CDefaults.OpenI

我正在尝试将自定义声明注入AzureB2C声明,以使基于角色的授权生效

开发堆栈是:

VS2019预览版16.3-.net核心3.0预览版9-Blazor服务器端。Azure应用程序服务。B2C电子邮件+LinkedIn

看起来这应该行得通,但至少在.NETCore3中不行

我还修改了建议的解决方案,改为使用OpenIDConnect方案和事件:

services.PostConfigure<OpenIdConnectEvents>(AzureADB2CDefaults.OpenIdScheme,
        options =>
        {
        options.OnTokenValidated = context =>
            {
                // since we're using AADB2C only, the first identity is the only identity
                var identity = context.Principal.Identities.First();

                Trace.WriteLine("Inside OnTokenResponseReceived");

                // add our test role to the identity's claims collection with the right type
                var extraClaim = new Claim(identity.RoleClaimType, "Extra");
                identity.AddClaim(extraClaim);

                return Task.CompletedTask;
            };
        });
services.PostConfigure(AzureADB2CDefaults.OpenIdScheme,
选项=>
{
options.OnTokenValidated=上下文=>
{
//因为我们只使用AADB2C,所以第一个标识是唯一的标识
var identity=context.Principal.identies.First();
Trace.WriteLine(“内部OnTokenResponseReceived”);
//使用正确的类型将我们的测试角色添加到标识的声明集合中
var extraClaim=新索赔(identity.RoleClaimType,“额外”);
身份。AddClaim(extraClaim);
返回Task.CompletedTask;
};
});

似乎OnTokenValidated从未为JWTBeareEvents或OpenIdConnectEvents触发过—尽管我显然已经登录并进行了身份验证。

我最终通过使用IClaimTransformation方法从


如果这种方法有任何问题、警告等,我很乐意听取任何人的意见。

fyi-RTM堆栈上也有同样的问题