Tôi có một ứng dụng web Java cung cấp dịch vụ tìm kiếm và trong một số trường hợp cần kiểm tra bảo mật để có kết quả. Nếu nó quan trọng, nó được thực hiện trong Spring MVC và chạy dưới cầu cảng.Xác thực ADFS và mạo danh từ ứng dụng Java (Spring MVC under Jetty)
Tôi có một khách hàng muốn xác thực ứng dụng web để:
- Hãy thực hiện thông qua Active Directory Federation Services (ADFS) thay vì hiện cơ chế xây dựng-in (để tránh một tên đăng nhập riêng biệt).
- Có thể mạo danh người dùng từ xa trên máy chủ tìm kiếm, như vậy có thể thực hiện kiểm tra bảo mật thực thi một ứng dụng riêng trên máy chủ tìm kiếm (không biết gì về ADFS, nhưng có thể thực hiện kiểm tra có liên quan khi chạy với tư cách là người dùng được đề cập).
Điều này có thể, và nếu có, làm cách nào?
(Xin lỗi nếu các thuật ngữ trên thế giới Windows là một chút tắt - nó không phải là một cái gì đó tôi biết nhiều về, nhưng hy vọng ít nhất là ý định rõ ràng)
Một vài lưu ý về mảnh ghép tôi đã đã nhìn:
- Impersonating a user from a Java Servlet, là một câu hỏi tôi đã có một số năm trước đây bao gồm khoảng cùng một khu đất, nhưng không có yêu cầu ADFS - tôi không chắc chắn như thế nào ADFS tác động vật, nhưng Waffle (giải pháp cho câu hỏi đó) dường như không cung cấp bất kỳ hỗ trợ nào cho nó.
- Tôi đã xem Java application with SSO (SAML) and ADFS và How do I talk to ADFS from Java?, dường như cung cấp cách thức để xác thực ADFS, nhưng tôi không chắc chắn liệu điều đó có tương thích với mạo danh tiếp theo hay không.
Tôi đã nhìn thấy http://blogs.objectsharp.com/post/2010/09/10/Converting-Claims-to-Windows-Tokens-and-User-Impersonation.aspx và https://msdn.microsoft.com/en-au/library/ee517278.aspx nhưng tôi không chắc chắn:
- Nếu tôi sẽ được tiếp cận với những tuyên bố cần thiết để làm điều này nếu tôi đi theo con đường SAML hoặc OAuth trên
- Cho dù đó là có thể thực hiện điều đó từ bên trong Java
tôi nghĩ thứ hai (mạo danh) một phần là gần giống như Impersonating ASP.NET claims identity to windows identity, ngoại trừ việc tôi muốn làm điều đó từ bên trong Java chứ không phải là Net.
Tôi nghĩ cốt lõi của vấn đề của tôi là bên kia không hỗ trợ điều này, vì vậy cách chúng tôi tương tác với nó đến nay là bằng cách mạo danh người dùng từ xa với CreateProcessAsUser (https://msdn.microsoft.com /en-au/library/windows/desktop/ms682429(v=vs.85).aspx) thông qua JNI, nhưng trong ADFS/SAML thế giới, nó không rõ ràng làm thế nào tôi sẽ nhận được mã thông báo mà chức năng cần. –