具有基于自定义角色的授权的ASP.Net Core 3.0 Windows身份验证

马达沃拉

我希望在ASP.NET 3.0 MVC应用程序中使用Windows身份验证,并从SQL数据库中提取角色以实现API安全。我将用类似的东西装饰API控制器方法[Authorize(Roles = "Admin")]

我在这里拥有很多东西,我是从这个网站上接过的,但是我只停留在最后一部分。我可以看到该角色已应用于用户,但是无法获得授权才能工作。

为此,我首先从ClaimsTransformer开始,它将用于通过声明将角色应用于我的用户。

ClaimsTransformer.cs

    public async Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
    {
        //This sample will automatically apply the Admin role to the user
        //In the real app, I will check the user against my DB and apply all roles (as claims) here
        var ci = (ClaimsIdentity)principal.Identity;
        var c = new Claim(ci.RoleClaimType, "Admin");
        ci.AddClaim(c);

        return await Task.FromResult(principal);
    }

Startup.cs-ConfigureServices

public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();

        //Register the ClaimsTransformer here
        services.AddSingleton<IClaimsTransformation, ClaimsTransformer>();

        //Use windows authentication
        services.AddAuthentication(IISDefaults.AuthenticationScheme);
        services.AddAuthorization();
    }

Starup.cs-配置

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthorization();
        app.UseAuthentication();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    }

DataController.cs

在API控制器中,我可以像这样设置没有授权的方法,并在检查User.IsInRole(“ Admin”);时看到显示为true的结果。

    [HttpGet]   
    public async Task<IActionResult> GetData1()
    {
        var result = User.IsInRole("Admin");

        return Ok(result);
    }

但是,如果我用[Authorize(Roles = "Admin")]这样的方式装饰控制器方法,则在调用此方法时会收到禁止响应。

    [HttpGet]       
    [Authorize(Roles = "Admin")]
    public async Task<IActionResult> GetData1()
    {
        var result = User.IsInRole("Admin");

        return Ok(result);
    }
范·埃尔伯格(Ruard van Elburg)

在这种情况下,这是一个很小但很常见的切换线路错误,顺序UseAuthentication(用户谁)然后是UseAuthorization(允许用户做什么)。这就解释了为什么授权不起作用。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.NET Core 3 Azure AD身份验证的自定义角色

来自分类Dev

具有自定义身份验证类型的ASP.NET Core JWT

来自分类Dev

ASP.NET Core 3.1的自定义身份验证处理程序的授权失败?

来自分类Dev

.Net Core 3.1自定义身份验证

来自分类Dev

Auth0 与 .Net Core ASP MVC 到 WebAPI 身份验证

来自分类Dev

具有身份和ExternalLogin的ASP.NET Core 3.1中基于角色的授权

来自分类Dev

.Net Core Web API的Auth0身份验证

来自分类Dev

Windows身份验证的ASP.NET 5自定义角色

来自分类Dev

具有IdentityServer4,Asp.Net Core身份和不带实体框架的自定义提供程序的Blazor WebAssembly身份验证

来自分类Dev

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

来自分类Dev

ASP.NET MVC + API和WCF具有针对自定义数据库和活动目录的基于声明的授权和身份验证

来自分类Dev

在ASP.NET Core中使用基于ADFS的身份验证来访问使用Windows身份验证的SQL Server?

来自分类Dev

如何在带有Servicestack的.NET Core中使用Windows身份验证登录

来自分类Dev

在ASP.NET Core中使用Authorize属性和自定义Cookie身份验证

来自分类Dev

ASP.Net Core中的自定义身份验证机制

来自分类Dev

在 Asp.Net Core 中实现自定义的 2 因素身份验证机制

来自分类Dev

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

来自分类Dev

如何在ASP.NET Core 3上同时使用Azure AD身份验证和身份?

来自分类Dev

我可以在ASP.NET Core 3中结合两种身份验证方案中的身份吗?

来自分类Dev

具有自定义角色的asp.net身份

来自分类Dev

自定义角色的Asp Net Core 3.1授权

来自分类Dev

NET Core中如何使用自定义策略架构实现jwt令牌库身份验证以进行授权?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

ASP.Net Core SAML身份验证

来自分类Dev

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

来自分类Dev

如何使用Windows身份验证将值与ASP.NET Core中的Windows帐户密码进行比较?

来自分类Dev

将Windows身份验证与带有ASP.NET Core的Azure Service Fabric一起使用

Related 相关文章

  1. 1

    .NET Core 3 Azure AD身份验证的自定义角色

  2. 2

    具有自定义身份验证类型的ASP.NET Core JWT

  3. 3

    ASP.NET Core 3.1的自定义身份验证处理程序的授权失败?

  4. 4

    .Net Core 3.1自定义身份验证

  5. 5

    Auth0 与 .Net Core ASP MVC 到 WebAPI 身份验证

  6. 6

    具有身份和ExternalLogin的ASP.NET Core 3.1中基于角色的授权

  7. 7

    .Net Core Web API的Auth0身份验证

  8. 8

    Windows身份验证的ASP.NET 5自定义角色

  9. 9

    具有IdentityServer4,Asp.Net Core身份和不带实体框架的自定义提供程序的Blazor WebAssembly身份验证

  10. 10

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

  11. 11

    ASP.NET MVC + API和WCF具有针对自定义数据库和活动目录的基于声明的授权和身份验证

  12. 12

    在ASP.NET Core中使用基于ADFS的身份验证来访问使用Windows身份验证的SQL Server?

  13. 13

    如何在带有Servicestack的.NET Core中使用Windows身份验证登录

  14. 14

    在ASP.NET Core中使用Authorize属性和自定义Cookie身份验证

  15. 15

    ASP.Net Core中的自定义身份验证机制

  16. 16

    在 Asp.Net Core 中实现自定义的 2 因素身份验证机制

  17. 17

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

  18. 18

    如何在ASP.NET Core 3上同时使用Azure AD身份验证和身份?

  19. 19

    我可以在ASP.NET Core 3中结合两种身份验证方案中的身份吗?

  20. 20

    具有自定义角色的asp.net身份

  21. 21

    自定义角色的Asp Net Core 3.1授权

  22. 22

    NET Core中如何使用自定义策略架构实现jwt令牌库身份验证以进行授权?

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

    ASP.Net Core SAML身份验证

  27. 27

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

  28. 28

    如何使用Windows身份验证将值与ASP.NET Core中的Windows帐户密码进行比较?

  29. 29

    将Windows身份验证与带有ASP.NET Core的Azure Service Fabric一起使用

热门标签

归档