Ho un'app Web Java che fornisce un servizio di ricerca e in alcuni casi deve controllare la sicurezza dei risultati. Se è importante, è implementato in Spring MVC e funziona sotto il molo.Autenticazione e rappresentazione di ADFS da un'applicazione Java (Spring MVC under Jetty)
Ho un cliente che vorrebbe l'autenticazione del web app per:
- essere fatto tramite Active Directory Federation Services (ADFS) invece del meccanismo di build-in esistenti (per evitare un accesso separato).
- Essere in grado di impersonare l'utente remoto sul server di ricerca, in modo che i controlli di sicurezza possano essere eseguiti eseguendo un'applicazione separata sul server di ricerca (che non conosce di per sé nulla su ADFS, ma è in grado di eseguire i controlli rilevanti quando eseguire come utente in questione).
E 'possibile, e se sì, come?
(Mi scuso se la terminologia mondo Windows è un po 'fuori - non è qualcosa che conosco molto circa, ma si spera che almeno l'intenzione è chiara)
Alcune note su pezzi del puzzle I' ve già guardato:
- Impersonating a user from a Java Servlet, è una domanda che ho avuto un certo numero di anni fa, che coprono più o meno lo stesso terreno, ma senza obbligo di ADFS - io non sono sicuro di come ADFS impatti cose, ma cialda (la soluzione per quella domanda) non sembra fornire alcun supporto per questo.
- Ho visto Java application with SSO (SAML) and ADFS e How do I talk to ADFS from Java?, che sembrano fornire un modo per l'autenticazione ADFS, ma non sono sicuro che sia compatibile con la rappresentazione successiva.
Ho visto http://blogs.objectsharp.com/post/2010/09/10/Converting-Claims-to-Windows-Tokens-and-User-Impersonation.aspx e https://msdn.microsoft.com/en-au/library/ee517278.aspx, ma io sono sicuro:
- Se avrò l'accesso ai crediti necessari per fare questo se seguo il percorso SAML o OAuth sopra
- Che si tratti di possibile implementare che da dentro Java
Penso che la seconda (rappresentazione) parte è più o meno lo stesso di Impersonating ASP.NET claims identity to windows identity, se non che io voglio farlo dal di dentro Java piuttosto che .Net.
Penso che il nocciolo del mio problema è che l'altra parte non supporta questo, quindi il modo in cui abbiamo interagito con esso è impersonando l'utente remoto con CreateProcessAsUser (https://msdn.microsoft.com /en-au/library/windows/desktop/ms682429(v=vs.85).aspx) tramite JNI, ma nel mondo ADFS/SAML, non è chiaro come ottenere il token di cui ha bisogno la funzione. –