Hangfire Azure 授权被拒绝
Hangfire Azure authorization denied
我已经使用 Hangfire 将我的小应用程序部署到 Azure 应用程序服务。 (我已经用另一个项目完成了这个)
我正在尝试使用 Azure Active Directory 授权进行设置。我转到 Azure 门户并在应用程序服务的 authentication/authorization 设置中进行设置:打开应用程序服务身份验证,选择 Azure Active Directory 并在身份验证提供程序菜单中添加已配置(Express:现有应用程序)(就像在以前的项目)。然后我重新启动应用程序服务。
Startup.cs 包含:
public void ConfigureServices(IServiceCollection services)
{
services.AddHangfire(config => config
.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings()
.UseMemoryStorage());
services.AddHangfireServer();
services.AddRazorPages();
}
public void Configure(
IApplicationBuilder app,
IWebHostEnvironment env,
IBackgroundJobClient backgroundJobClient,
IRecurringJobManager recurringJobs)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseHangfireDashboard("/jobs", new DashboardOptions()
{
Authorization = new[] { new HangFireAuthorizationFilter() }
});
app.UseHangfireServer(new BackgroundJobServerOptions { WorkerCount = Environment.ProcessorCount * 5 });
//backgroundJobClient.Enqueue(() => Console.WriteLine("Hello Hangfire job!!"));
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
HangFireAuthorizationFilter.cs 包含:
public class HangFireAuthorizationFilter : IDashboardAuthorizationFilter
{
public bool Authorize([NotNull] DashboardContext context)
{
//Can use this for NetCore
return !context.GetHttpContext().User.Identity.IsAuthenticated;
}
}
我成功发布到 Azure 并在出现提示时使用我的 Azure 帐户登录,我收到此消息:
You do not have permission to view this directory or page.
我在 Azure 应用程序中启用了登录功能,但收到此错误消息:
我到底做错了什么?我肯定错过了什么,但不知道是什么。如果我禁用 Azure 的授权,部署和应用程序本身将按预期工作。
我可以在我这边重现你的问题,我想你错过了你的 AD 应用程序中的 API 权限,请尝试以下步骤。
导航到门户中的 Azure Active Directory
-> App registrations
-> 使用过滤器 All applications
找到与网络应用程序对应的广告应用程序 -> API permissions
- > 在 Microsoft Graph
.
中添加 Delegated 权限 User.Read
然后当你使用你的AAD租户中的用户帐户登录web应用时,它会要求你同意权限User.Read
,同意并登录成功后,它会正常工作。
注意: 要同意普通用户的权限,请确保 Azure Active Directory
-> Enterprise applications
-> User settings
-> Users can consent to apps accessing company data on their behalf
设置为 Yes
.
在 Azure 应用服务 settings/configs 中反复试验后,以下更改解决了我的问题:
在应用程序注册的“身份验证”中添加了完整的URL无路由
已从 API 应用程序注册权限中删除“Power BI”权限
已授予管理员对应用程序中所有预定义权限的同意
报名
将“请求未通过身份验证时采取的操作”更改为:“记录
在应用服务中使用 Azure Active Directory”
“Authentication/Authorization”
我已经使用 Hangfire 将我的小应用程序部署到 Azure 应用程序服务。 (我已经用另一个项目完成了这个)
我正在尝试使用 Azure Active Directory 授权进行设置。我转到 Azure 门户并在应用程序服务的 authentication/authorization 设置中进行设置:打开应用程序服务身份验证,选择 Azure Active Directory 并在身份验证提供程序菜单中添加已配置(Express:现有应用程序)(就像在以前的项目)。然后我重新启动应用程序服务。
Startup.cs 包含:
public void ConfigureServices(IServiceCollection services)
{
services.AddHangfire(config => config
.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings()
.UseMemoryStorage());
services.AddHangfireServer();
services.AddRazorPages();
}
public void Configure(
IApplicationBuilder app,
IWebHostEnvironment env,
IBackgroundJobClient backgroundJobClient,
IRecurringJobManager recurringJobs)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseHangfireDashboard("/jobs", new DashboardOptions()
{
Authorization = new[] { new HangFireAuthorizationFilter() }
});
app.UseHangfireServer(new BackgroundJobServerOptions { WorkerCount = Environment.ProcessorCount * 5 });
//backgroundJobClient.Enqueue(() => Console.WriteLine("Hello Hangfire job!!"));
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
HangFireAuthorizationFilter.cs 包含:
public class HangFireAuthorizationFilter : IDashboardAuthorizationFilter
{
public bool Authorize([NotNull] DashboardContext context)
{
//Can use this for NetCore
return !context.GetHttpContext().User.Identity.IsAuthenticated;
}
}
我成功发布到 Azure 并在出现提示时使用我的 Azure 帐户登录,我收到此消息:
You do not have permission to view this directory or page.
我在 Azure 应用程序中启用了登录功能,但收到此错误消息:
我到底做错了什么?我肯定错过了什么,但不知道是什么。如果我禁用 Azure 的授权,部署和应用程序本身将按预期工作。
我可以在我这边重现你的问题,我想你错过了你的 AD 应用程序中的 API 权限,请尝试以下步骤。
导航到门户中的 Azure Active Directory
-> App registrations
-> 使用过滤器 All applications
找到与网络应用程序对应的广告应用程序 -> API permissions
- > 在 Microsoft Graph
.
User.Read
然后当你使用你的AAD租户中的用户帐户登录web应用时,它会要求你同意权限User.Read
,同意并登录成功后,它会正常工作。
注意: 要同意普通用户的权限,请确保 Azure Active Directory
-> Enterprise applications
-> User settings
-> Users can consent to apps accessing company data on their behalf
设置为 Yes
.
在 Azure 应用服务 settings/configs 中反复试验后,以下更改解决了我的问题:
在应用程序注册的“身份验证”中添加了完整的URL无路由
已从 API 应用程序注册权限中删除“Power BI”权限
已授予管理员对应用程序中所有预定义权限的同意 报名
将“请求未通过身份验证时采取的操作”更改为:“记录 在应用服务中使用 Azure Active Directory” “Authentication/Authorization”