0

路上的菜鸟问题。

我使用 Git 站点 [https://github.com/Azure-Samples/ms-identity-aspnet-webapi-onbehalfof/tree/master/TodoListService] 中的示例为 Web APi 开发了 Azure Ad 身份验证Azure 广告身份验证问题。请在下面找到代码。

来自 Controller1 类的操作方法。

   [RoutePrefix("api/hospitals")]
   public class HospitalsController : ApiController
   {
    [Route("GetAll")]
    [HttpGet]
    [PmAuthorize(Constants.Roles.Admin,Constants.Roles.Doctor)]
    public async Task<IEnumerable<hospitals>> GetAll()
    { 
      //return data;....
    }
    }

我的 startup.auth.cs 文件

    public partial class Startup
    {
    string clientId = System.Configuration.ConfigurationManager.AppSettings["ClientId"];

    string redirectUri = System.Configuration.ConfigurationManager.AppSettings["RedirectUri"];

    static string tenant = System.Configuration.ConfigurationManager.AppSettings["Tenant"];

    string authority = String.Format(System.Globalization.CultureInfo.InvariantCulture, System.Configuration.ConfigurationManager.AppSettings["Authority"], tenant);
     public void ConfigureAuth(IAppBuilder app)
    {
        app.UseWindowsAzureActiveDirectoryBearerAuthentication(
           new WindowsAzureActiveDirectoryBearerAuthenticationOptions
           {
               Tenant = tenant,
               TokenValidationParameters = new TokenValidationParameters { SaveSigninToken = true, ValidAudience = "clientid" }
           });
    }
  }

WebApiConfig.cs

 public static class WebApiConfig
  {
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Filters.Add(new ExceptionHandlingAttribute());
        }
       }

每当我通过传递令牌从医院控制器调用操作方法/api方法调用时,都会收到错误为“此请求的授权已被拒绝”。

有人可以在这里帮助我吗?

如果需要任何附加信息,请添加任何评论?

提前致谢。

4

1 回答 1

0

从我这边看,这是一个错误的错误。

我必须在“PmAuthorize”属性中添加几行代码来为用户提供角色。

这给了我答案。

于 2020-08-23T09:53:11.623 回答