WebAPI, DPAPI и LoadUserProfile - PullRequest
       31

WebAPI, DPAPI и LoadUserProfile

1 голос
/ 02 мая 2019

Мы пытаемся использовать DPAPI в нашем собственном приложении WebAPI на основе OWIN. Приложение настроено для проверки подлинности Windows и работает как служба под учетной записью SYSTEM:

var listener = (HttpListener)app.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemes = AuthenticationSchemes.Ntlm;

В контроллере мы делаем что-то вроде этого:

public IHttpActionResult SomeAction()
{
  var currentWindowsIdentity = (WindowsIdentity)this.User.Identity;

  // load user profile for currentWindowsIdentity and impersonate
  using (UserProfile.Load(currentWindowsIdentity)) // UserProfile is a wrapper arounf LoadUserProfileW
  using (currentWindowsIdentity.Impersonate())
  {
    ProtectedData.Unprotect(…);
  }
}

Сбой вызова ProtectedData.Unprotect с CryptographicException: Key not valid for use in specified state. Если тот же пользователь, который вызывает действие, входит в систему на компьютере, на котором запущено приложение, то ProtectedData.Unprotect завершается успешно. Похоже, что LoadUserProfileW не загружает некоторые данные профиля, связанные с DPAPI. Мы что-то упустили, или это задумано?

...