Аутентификация учетной записи локального пользователя с помощью Azure Active Directory - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь использовать как локальную учетную запись пользователя, так и Azure Active Directory в моем приложении asp.net core 2.0.

Они оба работают хорошо по отдельности (с активацией только одного из них), но когда я активирую оба из них, аутентификация Azure Active Directory не работает.

Неудачный случай: После возврата моего веб-приложения из аутентификации на веб-сайте Azure мое веб-приложение User.Identity.IsAuthenticated имеет значение False.

Шаги:

  1. Переадресация клиента на сайт аутентификации Azure со следующим кодом: public IActionResult LoginWithOpenId(string returnUrl) { return Challenge("myAzureAD"); }
  2. Войдите на сайт Azure.
  3. Возврат к пути обратного вызова.
  4. Обратный вызов установить необходимые куки.
  5. IsAuthenticated все еще Ложь.

Вот код:

Startup.cs

        services
            .AddDbContext<ApplicationDataContext>(options =>
            {
                options.UseInMemoryDatabase("testdb");
            });

        services
            .AddIdentity<IdentityUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDataContext>();

        services
            .AddAuthentication()
            .AddOpenIdConnect("myAzureAD", options =>
            {
                options.ClientId = "xxx";
                options.Authority = "https://login.microsoftonline.com/xxx";
                options.CallbackPath = "/signin-oidc";
                options.RequireHttpsMetadata = false;
            })
            .AddCookie();

        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseAuthentication();
    }

AccountController

    public IActionResult LoginWithOpenId(string returnUrl)
    {
/*This is always false, 
if I remove AddIdentity from StartUp class to disable local authentication,
this line is working*/
        if (HttpContext.User.Identity.IsAuthenticated)
        {
            return RedirectToAction("private", "home");
        }
        else
        {
            return Challenge("myAzureAD");
        }
    }
...