.Net 5 Blazor Server AD Group Проблема авторизации

Я не могу заставить свое приложение Blazor Server соблюдать членство в группе AD, я могу заставить его прочитать мой идентификатор пользователя, поэтому я предполагаю, что NTLM работает, но, похоже, оно не распознает меня как bing в группе.

Я пробовал IIS и IIS Express.

запускSettings.json

{
  "iisSettings": {
    "windowsAuthentication": true,
    "anonymousAuthentication": false,
    "iisExpress": {
      "applicationUrl": "http://localhost:58855",
      "sslPort": 44394
    }
  },
  "profiles": {
    "IIS Express": {      
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "AppName": {
      "commandName": "Project",
      "dotnetRunMessages": "true",
      "launchBrowser": true,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

Startup.cs

    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddServerSideBlazor();
            services.AddHttpContextAccessor();

            services.AddAuthentication(IISDefaults.AuthenticationScheme);
            services.AddAuthorization(options =>
            {
                options.AddPolicy("ADRoleOnly", policy => policy.RequireRole("DOMAIN\\GroupName"));

            });
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
        {
            
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                //app.UseHsts();
            }

            //app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthentication();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapBlazorHub();
                endpoints.MapFallbackToPage("/_Host");
            });
        }
    }

Затем на одной из моих страниц Razor у меня есть следующее, как я уже сказал, даже в разделе NotAuthorized мое имя пользователя все еще отображается

<AuthorizeView Policy="ADRoleOnly">
    <Authorized>
        @context.User.Identity.Name is authorized.
    </Authorized>
    <NotAuthorized>
        @context.User.Identity.Name is not authorized.
    </NotAuthorized>
</AuthorizeView>

<AuthorizeView Roles="DOMAIN\\GroupName">
    <Authorized>
        @context.User.Identity.Name is authorized.
    </Authorized>
    <NotAuthorized>
        @context.User.Identity.Name is not authorized.
    </NotAuthorized>
</AuthorizeView>

В настоящее время я накатил свою собственную безопасность, которая просто скрывает весь контент на странице общего макета, но мне это не нравится, это медленно, и вы никогда не должны писать свою собственную модель безопасности, если вы можете помочь ей, а) я не буду поддерживать его в актуальном состоянии и б) скорее всего, в нем есть ошибка, чем что-либо еще.

Я действительно хотел бы знать, что я пропустил, чтобы это не работало правильно.


person Matt    schedule 22.02.2021    source источник


Ответы (1)


Разве я не чувствую себя глупо сейчас, группа, против которой я пытался авторизоваться, была только группой распределения в AD, а не группой безопасности. Я использовал другую группу, и теперь она работает нормально.

person Matt    schedule 22.02.2021