Tôi đã thực hiện mạo danh trong SharePoint khá một chút trong quá khứ bằng cách thực hiện một số việc như sau.Bạn có thể thực hiện tìm kiếm giả mạo trong SharePoint mà không cần cung cấp mật khẩu không?
SPWeb web = SPContext.Current.Web;
string currentWebUrl = web.Url;
SPUser user = web.EnsureUser(loginToImpersonate);
using (SPSite site = new SPSite(currentWebUrl, user.UserToken)
{
using (SPWeb impersonatedWeb = site.OpenWeb())
{
// Any SharePoint access here to 'impersonatedWeb'
// is impersonated as 'loginToImpersonate'
}
}
Lưu ý rằng điều này không yêu cầu mật khẩu của người dùng bạn đang mạo danh, nhưng yêu cầu bảo mật truy cập mã nhất định để chạy. Lưu ý rằng cuộc gọi EnsureUser cũng yêu cầu người dùng hiện tại phải là quản trị viên, nhưng có các phương pháp khác có thể được sử dụng thay cho EnsureUser để lấy đối tượng SPUser (cố gắng giữ đoạn mã của tôi đơn giản cho câu hỏi này).
Bây giờ tôi đã đặt giai đoạn ... Bây giờ tôi muốn thực hiện một FullTextSQLQuery hoặc một KeywordQuery đối với công cụ truy vấn MOSS hoặc WSS và nhận được các kết quả được bảo mật dựa trên người dùng bị mạo danh. Cả hai đối tượng đều có thể lấy SPSite trên hàm khởi tạo, nhưng bỏ qua logic giả mạo của tôi. Họ đi với người dùng hiện đang đăng nhập thay vào đó (HTTPContext.Current.User).
Ngoài ra còn có các hàm tạo khác: tên ứng dụng (chuỗi) và cho MOSS có một tệp với ServerContext đến SSP, nhưng tôi không nghĩ chúng sẽ giúp ích gì cả.
Tôi đã sử dụng Trình phản xạ trên lớp KeywordQuery và lớp Truy vấn cơ sở của nó và nó trở nên khá xấu xí khá nhanh. Tôi tin rằng logic thực tế xác định người dùng đang ở trong mã không được quản lý.
Vì vậy, tôi có thể làm điều này không?
Liên kết hoạt động: http://www.threewill.com/2010/06/connect-to-sharepoint-forwarding-user-identities/ – KjellSj