.NET Core在AzuerAD身份验证后添加声明

布林克

我的应用程序通过AzureAD登录,但是现在我需要从数据库获取信息,然后将角色存储为声明。

所以我的问题是:身份验证后如何将角色存储为Claim?

这是我尝试的:

var user = User as ClaimsPrincipal;
var identity = user.Identity as ClaimsIdentity;
identity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));  

但是当我转到另一个控制器时,该索偿不再存在了吗?

谢谢

Nan Yu

您可以在OIDC中间件的身份验证过程中实现这一点,OnTokenValidated使您有机会修改从传入令牌获得的ClaimsIdentity,以下代码供您参考:

services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
            .AddAzureAD(options => Configuration.Bind("AzureAd", options));


services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
    options.Events = new OpenIdConnectEvents
    {
        OnTokenValidated = ctx =>
        {
            //query the database to get the role

            // add claims
            var claims = new List<Claim>
            {
                new Claim(ClaimTypes.Role, "Admin")
            };
            var appIdentity = new ClaimsIdentity(claims);

            ctx.Principal.AddIdentity(appIdentity);

            return Task.CompletedTask;
        },
    };
});

然后在controller中,您可以得到如下索赔:

var role = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Role)?.Value;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.NET Core令牌身份验证-主体

来自分类Dev

.Net Core HttpClient摘要身份验证

来自分类Dev

ASP.NET CORE 中的自定义身份验证和更新声明

来自分类Dev

ASP .NET CORE 2.2 JWT 和声明网站身份验证

来自分类常见问题

.NET Core身份服务器4身份验证VS身份身份验证

来自分类Dev

声明身份验证ASP.NET vNext

来自分类Dev

ASP.NET Core 3.0身份不会向我的浏览器添加任何身份验证数据

来自分类Dev

使用.Net Core中的Windows经过身份验证的应用程序填充来自SQL的自定义声明

来自分类Dev

身份验证后如何填写ASP.NET用户?

来自分类Dev

向ASP.NET WebApi 2.2添加身份验证

来自分类Dev

ASP.NET Core中的承载令牌身份验证

来自分类Dev

ASP.NET Core中的基本身份验证

来自分类Dev

ASP.Net Core SAML身份验证

来自分类Dev

.NET Core 3.1 WebApi项目+ NTLM身份验证

来自分类Dev

.NET Core API中的Windows身份验证自动登录

来自分类Dev

什么是ASP.NET Core的Microsoft身份验证方案?

来自分类Dev

.Net Core 3.1自定义身份验证

来自分类Dev

.Net Core Web API的Auth0身份验证

来自分类Dev

mvc 到 net core 2 迁移身份验证

来自分类Dev

在 .NET Core 2.0 中设置 JWT 身份验证

来自分类Dev

.Net Core 身份验证和用户会话

来自分类Dev

仅在具有ASP.NET Core的Azure上进行身份验证后获取错误500

来自分类Dev

将身份服务器身份验证添加到.NET Core 3应用失败,并显示“未指定密钥类型”。

来自分类Dev

使用令牌身份验证的net.tcp上的WCF丢失了TokenHandler和AuthorisationManager之间的声明

来自分类Dev

如何将基于声明的身份验证应用于.NET 4应用程序?

来自分类Dev

Asp.net身份验证错误

来自分类Dev

ASP.NET目录身份验证

来自分类Dev

Phantom.js .NET身份验证

来自分类Dev

关于.Net Windows身份验证

Related 相关文章

  1. 1

    .NET Core令牌身份验证-主体

  2. 2

    .Net Core HttpClient摘要身份验证

  3. 3

    ASP.NET CORE 中的自定义身份验证和更新声明

  4. 4

    ASP .NET CORE 2.2 JWT 和声明网站身份验证

  5. 5

    .NET Core身份服务器4身份验证VS身份身份验证

  6. 6

    声明身份验证ASP.NET vNext

  7. 7

    ASP.NET Core 3.0身份不会向我的浏览器添加任何身份验证数据

  8. 8

    使用.Net Core中的Windows经过身份验证的应用程序填充来自SQL的自定义声明

  9. 9

    身份验证后如何填写ASP.NET用户?

  10. 10

    向ASP.NET WebApi 2.2添加身份验证

  11. 11

    ASP.NET Core中的承载令牌身份验证

  12. 12

    ASP.NET Core中的基本身份验证

  13. 13

    ASP.Net Core SAML身份验证

  14. 14

    .NET Core 3.1 WebApi项目+ NTLM身份验证

  15. 15

    .NET Core API中的Windows身份验证自动登录

  16. 16

    什么是ASP.NET Core的Microsoft身份验证方案?

  17. 17

    .Net Core 3.1自定义身份验证

  18. 18

    .Net Core Web API的Auth0身份验证

  19. 19

    mvc 到 net core 2 迁移身份验证

  20. 20

    在 .NET Core 2.0 中设置 JWT 身份验证

  21. 21

    .Net Core 身份验证和用户会话

  22. 22

    仅在具有ASP.NET Core的Azure上进行身份验证后获取错误500

  23. 23

    将身份服务器身份验证添加到.NET Core 3应用失败,并显示“未指定密钥类型”。

  24. 24

    使用令牌身份验证的net.tcp上的WCF丢失了TokenHandler和AuthorisationManager之间的声明

  25. 25

    如何将基于声明的身份验证应用于.NET 4应用程序?

  26. 26

    Asp.net身份验证错误

  27. 27

    ASP.NET目录身份验证

  28. 28

    Phantom.js .NET身份验证

  29. 29

    关于.Net Windows身份验证

热门标签

归档