Заставьте Windows Аутентификацию работать с Identity Server 4 под IIS - PullRequest
2 голосов
/ 28 января 2020

Для начала у меня было приложение Angular, которое использует клиентскую библиотеку angular -auth-oid c -клиента для запуска аутентификации Idenity Server 4 (поток кода авторизации с PKCE), используя Facebook en Microsoft Аккаунт провайдеров. Все это прекрасно работает, локально работает под IIS Express.

Теперь я хотел добавить windows аутентификацию. Итак, я добавил это в launchsettings:

"iisSettings": {
  "windowsAuthentication": true,
}

... и в Startup of IdentityServer:

services.Configure<IISOptions>(iis => {
            iis.AuthenticationDisplayName = "Windows";
            iis.AutomaticAuthentication = true;
});

Если я затем вызвал Windows Аутентификация, метод Challenge из ExternalController был выполнен, и в Callback я автоматически получил моего windows пользователя, он не просил вводить учетные данные (работает под Windows 10), так что это работало также отлично.

Теперь, когда я попробуйте сделать то же самое под IIS (и я включаю Windows аутентификацию в IIS), вместо автоматического входа в систему с моим windows пользователем, я получаю всплывающее окно:

enter image description here

Таким образом, похоже, что в IIS аутентификация Windows работает по-другому, потому что она запрашивает мои учетные данные вместо того, чтобы использовать учетную запись зарегистрированного пользователя windows.

Если я читаю документы , я вижу, что следует использовать Kestrel или WebListener. Действительно ли необходимо использовать Kestrel или WebListener для обеспечения Windows аутентификации в IIS? Или я что-то пропустил?

РЕДАКТИРОВАТЬ: я пытаюсь это локально на моем windows 10 ноутбуке, и я не в домене.

1 Ответ

0 голосов
/ 31 января 2020

В то же время я развернул свои компоненты на портативном компьютере домена (с использованием IIS), чтобы посмотреть, будет ли он вести себя по-разному; и действительно, есть молчаливый SSO вместо запроса учетных данных. Таким образом, это означает, что на моем не доменном ноутбуке он запрашивал учетные данные, потому что я не был в домене.

...