问题描述
因此,我有一个工作正常的服务器端Blazor应用程序,该应用程序与我们公司的Azure AD关联在一起可用于一些内部报表。没什么花哨的,几乎和所有教程一样,它本身也很好用。然后,我被要求将其包含在我们公司的“团队”标签中。
想通了我将其添加为“网站”选项卡,但是随后遇到了一个问题,即Microsoft的登录页面不喜欢位于iframe中(这很合理)。 问题是-我可以设置一个选项来强制身份验证的弹出版本而不是重定向吗?下面的Startup.cs
public void ConfigureServices(IServiceCollection services)
{
//Add our azure security stuff
string[] graphScopes = Configuration.GetValue<string>("GraphApi:Scopes")?.Split(',');
services.AddMicrosoftIdentityWebAppAuthentication(Configuration,"AzureAd")
.EnabletokenAcquisitionToCallDownstreamApi(graphScopes)
.AddInMemoryTokenCaches();
//Standard stuff
services.AddRazorPages();
services.AddServerSideBlazor().AddMicrosoftIdentityConsentHandler();
services.AddHttpContextAccessor();
services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
options.Filters.Add(new Authorizefilter(policy));
}).AddMicrosoftIdentityUI();
//Add our role handling
services.AddAuthorization(options =>
{
options.AddPolicy("IsAdmin",policy =>
{
policy.Requirements.Add(new ADGroupRequirement(new string[] { "{some-hard-coded-test-guid}" }));
});
});
services.AddSingleton<IAuthorizationHandler,ADGroupHandler>();
}
public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
}
我的下一步是重写auth,以不使用nuget包,而是使用adal js库,而不是遵循此页面的文档(MS Teams Silent Auth),尽管这只花了我几天的时间,但我d不想废弃我认为是更干净的auth方法,以使其在我们的新用例中工作。希望有人可以指出我所缺少的东西。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)