自己的授权拒绝角色

本文关键字:角色 拒绝 授权 自己的 | 更新日期: 2023-09-27 17:53:54

我最近加入了一个项目团队,负责为项目的后端设置用户角色。它使用ASP。. NET c# WebApi与Owin。我的问题是,当我像这样给控制器方法分配属性时:

[Authorize(Roles = "Admin")]

对此请求的响应始终是拒绝授权。但是如果我简单地使用:

[Authorize]

它的工作原理。请注意,我是用一个被分配了Admin角色的用户登录的。

我注意到这个问题类似于:授权角色WebAPI oauth own

然而,似乎他们在startup.cs中的代码是不同的,否则我很难正确地遵循答案。

我必须处理的startup.cs中的代码是:

public void Configuration(IAppBuilder app)
{
    // configure OAuth
    ConfigureOAuth(app);
    // configure Mvc
    HttpConfiguration config = new HttpConfiguration();
    WebApiConfig.Register(config);
    app.UseWebApi(config);
}
public void ConfigureOAuth(IAppBuilder app)
{
    OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
    {
        AllowInsecureHttp = true,
        TokenEndpointPath = new PathString("/token"),
        AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
        Provider = new SimpleAuthorizationServerProvider()
    };
    // Token Generation
    app.UseOAuthAuthorizationServer(OAuthServerOptions);
    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}

是否有别的东西我需要添加在这里,以允许角色,或者它应该是在代码的其他地方。我对ASP并不完全熟悉。. NET c# MVC或WebApi,任何帮助都非常感谢。

自己的授权拒绝角色

In SimpleAuthorizationServerProvider

GrantResourceOwnerCredentials

这样的方法
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) {
 await Task.Run(
  () => {
      ...logging logic...
      var loginResult = authRepository.Login(context.UserName, context.Password);
      if (!loginResult.Success) return;
      ...logging logic...
      var claims = new List < Claim > ();
      claims.add(new Claim(ClaimTypes.Role, loginResult.Role)); < --here
      var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ExternalBearer);
      context.Validated(id);
  });
}

loggingResult是存储库/DAL层返回的东西