C# 服务器端Blazor与MS Identity Auth在团队中?

C# 服务器端Blazor与MS Identity Auth在团队中?,c#,blazor,blazor-server-side,microsoft-identity-platform,C#,Blazor,Blazor Server Side,Microsoft Identity Platform,因此,我有一个工作的服务器端Blazor应用程序,它与我们公司的Azure广告相关联,用于一些内部报告表。没什么特别的,跟所有的教程都很像,而且它自己也很好用。然后我被要求将其作为我们公司团队标签的一部分 我想我会把它添加为一个网站标签,但后来遇到了一个问题,微软的登录页面不喜欢在iframe中(这很有道理)问题是-我可以设置一个选项来强制弹出验证版本而不是重定向吗?下面的Startup.cs public void ConfigureServices(IServiceCollection se

因此,我有一个工作的服务器端Blazor应用程序,它与我们公司的Azure广告相关联,用于一些内部报告表。没什么特别的,跟所有的教程都很像,而且它自己也很好用。然后我被要求将其作为我们公司团队标签的一部分

我想我会把它添加为一个网站标签,但后来遇到了一个问题,微软的登录页面不喜欢在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");
 });
}

public void配置服务(IServiceCollection服务)
{
//添加我们的azure安全内容
字符串[]graphScopes=Configuration.GetValue(“GraphApi:Scopes”)?.Split(',');
services.AddMicrosoftIdentityWebAppAuthentication(配置,“AzureAd”)
.EnableTokenAcquisitionCallDownstreamMapi(图形范围)
.AddInMemoryTokenCaches();
//标准材料
services.AddRazorPages();
services.AddServerSideBlazor().AddMicrosoftIdentityConsentHandler();
AddHttpContextAccessor();
services.addcontrollerswithview(选项=>
{
var policy=new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
options.Filters.Add(新的授权过滤器(策略));
}).AddMicrosoftIdentityUI();
//添加我们的角色处理
services.AddAuthorization(选项=>
{
options.AddPolicy(“IsAdmin”,policy=>
{
Add(新的ADGroupRequirement(新字符串[]{{some hard coded test guid}}}));
});
});
services.AddSingleton();
}
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
其他的
{
app.UseExceptionHandler(“/Error”);
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(端点=>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage(“/_主机”);
});
}
我接下来的步骤是重写auth,不使用nuget包,而是使用adal js库,而不是遵循本页的文档(),虽然这只花了我几天的时间,但我不想放弃我认为更干净的auth方法,让它在我们的新用例中工作。希望有人能指出我遗漏的东西