Mam 2 aplikacje ASP.NET MVC 3. Używam podszywania się za pośrednictwem pliku web.config, aby umożliwić mi wysłanie zapytania do Active Directory w celu uzyskania szczegółowych informacji o użytkowniku. Aplikacja korzysta z uwierzytelniania systemu Windows i nie zezwala na anonimowych użytkowników. Jedna aplikacja to główna aplikacja, w której użytkownik wykonuje swoje zadania. Drugi pozwala użytkownikowi skonfigurować innych użytkowników, aby wyglądali jak oni w aplikacji pierwszej.Personifikacja, Active Directory i problemy z "użytkownikiem nie ma uprawnień do xxxx"
Użytkownik Test'S otrzymuję następujący błąd:
SQL1092N "<DOMAIN ID>" does not have the authority to perform the requested command.
Dzieje się tak po tym, jak wysłać żądanie internetową z mojego pierwotnego wniosku do jednego wtórnego. Aby to zadziałało, musiałem uczynić żądanie personifikacją rzeczywistego użytkownika, a nie tożsamością, której aplikacja używa do personifikacji. To jest właściwie pytanie, które napisałem i odpowiedziałem. To tutaj: How do I call an MVC Action via a WebRequest and validate the request through Active Directory?
Pod koniec tego kodu, wzywam:
impersonationContext.Undo();
Jest po to żądanie WWW odbywa się, że podstawowym aplikacja próbuje dostępu do bazy danych, a teraz wydaje się, że powyższe wezwanie cofnął podszywanie się pod aplikację, więc próba użytkownika, która spowodowała otwarcie połączenia z bazą danych, zakończyła się niepowodzeniem. Przynajmniej to moja robocza teoria po całym dniu walenia głową.
Moje pytanie brzmi: jak mogę uzyskać podszywanie się pod aplikację, aby powrócić do użytkownika w pliku web.config? Lub, kiedy składasz moją prośbę, czy istnieje sposób na zapewnienie, że kontekst personifikacji dotyczy tylko tego żądania?
Najważniejsze jest to, że druga aplikacja ma własną bazę danych serwera sql. Podstawowa aplikacja używa DB2. Chciałbym raz wpisać kod dostępu do bazy danych, ale użyję go w obu aplikacjach. Obecnie to właśnie zrobiłem, ale moja metoda polegania na żądaniu strony internetowej, aby uzyskać dane, może nie być najlepszym podejściem.
Jestem otwarty na wszelkie przemyślenia, komentarze, sugestie i/lub krytykę. Jak mam sobie z tym poradzić?
Czy jest coś, co muszę wyjaśnić? Czy sposób, w jaki powstaje pytanie, przeszkadza? Opinia została przyjęta z zadowoleniem. Nie mam nic przeciwko przeprojektowaniu lub wyjaśnieniu tam, gdzie to możliwe. – jason