带有 Web API 不记名令牌身份验证的 Azure AD 无法正常工作并抛出错误 "Authorization has been denied for this request."
Azure AD with Bearer token authentication for Web API not working throwing error as "Authorization has been denied for this request."
一个菜鸟问题正在路上。
我使用 Git 站点 [https://github.com/Azure-Samples/ms-identity-aspnet-webapi-onbehalfof/tree/master/TodoListService] 中的示例为 Web APi 开发了 Azure Ad 身份验证
我一直面临 Azure Ad 身份验证问题。
请在下面找到代码。
Controller1 的操作方法class。
[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());
}
}
每当我通过传递令牌从医院控制器调用操作 method/api 方法调用时,收到错误“此请求的授权已被拒绝”。
有人可以帮我吗?
如果需要任何附加信息,请添加任何评论?
提前致谢。
这是我这边的失误。
我不得不在“PmAuthorize”属性中添加几行代码来为用户赋予角色。
这给了我答案。
一个菜鸟问题正在路上。
我使用 Git 站点 [https://github.com/Azure-Samples/ms-identity-aspnet-webapi-onbehalfof/tree/master/TodoListService] 中的示例为 Web APi 开发了 Azure Ad 身份验证 我一直面临 Azure Ad 身份验证问题。 请在下面找到代码。
Controller1 的操作方法class。
[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());
}
}
每当我通过传递令牌从医院控制器调用操作 method/api 方法调用时,收到错误“此请求的授权已被拒绝”。
有人可以帮我吗?
如果需要任何附加信息,请添加任何评论?
提前致谢。
这是我这边的失误。
我不得不在“PmAuthorize”属性中添加几行代码来为用户赋予角色。
这给了我答案。