2015-05-16 18 views
12

Có hướng dẫn từng bước về cách tạo "vé" cho người dùng iCloud được cung cấp tên người dùng/mật khẩu của họ hay không. Tôi muốn xây dựng một dịch vụ truy cập dữ liệu iCloud (máy chủ đến máy chủ) mà không cần phải lưu trữ tên người dùng hoặc mật khẩu iCloud.Truy cập iCloud an toàn thay mặt cho người dùng (máy chủ đến máy chủ)

Hiểu biết của tôi là bạn sử dụng tên người dùng/mật khẩu để tạo vé Kerberos từ iCloud. Đó là dựa trên câu trả lời cho How does Sunrise for iOS use iCloud credentials to access our calendar?. Nhưng tôi chưa tìm thấy hướng dẫn trực tuyến về cách thực hiện điều đó.

Có ai biết cách thực hiện điều đó không? Cảm ơn!

+1

Bạn đã xem tài liệu xác thực cho icloud chưa? https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/CloutKitWebServicesReference/SettingUpWebServices/SettingUpWebServices.html#//apple_ref/doc/uid/TP40015240-CH24-SW3 –

+0

Bạn đang cố gắng tích hợp ứng dụng của mình với iCloud và lưu trữ/truy xuất từ ​​đám mây hoặc bạn có quyền truy cập vào tất cả dữ liệu người dùng trên iCloud không? –

Trả lời

3

Hãy để tôi bắt đầu bằng cách chỉ ra rằng theo bộ nhớ ứng dụng iCloud mặc định là "hộp cát" trong vùng chứa. Ứng dụng đã ký chỉ có thể truy cập vùng chứa riêng mà không cần có khóa API để xác thực với các vùng chứa ứng dụng khác. Bạn có thể làm cho nhiều ứng dụng chia sẻ cùng một vùng chứa hoặc sử dụng nhiều vùng chứa trong cùng một ứng dụng nếu cần, nhưng về cơ bản bạn phải là nhà phát triển của tất cả các ứng dụng hoặc có quyền rõ ràng để thực hiện việc này. Hãy xem Incorporating iCloud into your appEnabling CloudKit để biết thêm chi tiết.

khác (không appstore) các ứng dụng và dịch vụ có thể xác thực để sử dụng dữ liệu của một ứng dụng thông qua CloudKit Web Services:

  1. Xác thực iCloud (chuyển hướng dựa, vì vậy thông tin vẫn không bao giờ được tiết lộ và chỉ được biết đến bởi người dùng và chính máy chủ iCloud);
  2. Xác thực thêm với khóa API ứng dụng của bạn;

Quy trình được mô tả chi tiết here, như đã được chỉ ra bởi Adam Taylor.

Tất cả những điều trên đều được nói, Nếu tôi hiểu chính xác, bạn muốn có quyền truy cập vào tất cả dữ liệu iCloud của người dùng. Tôi nghĩ, bạn sẽ không thể làm như vậy vì nhiều lý do:

  1. Dữ liệu được bảo vệ bằng khóa ứng dụng, vì vậy bạn cần có điều này để truy cập vào vùng chứa ngoài thông tin đăng nhập cơ bản;
  2. Tôi chắc chắn rằng Apple có chính sách thiết kế để không bao giờ yêu cầu thông tin đăng nhập của người dùng ở dạng văn bản thuần túy. Yêu cầu người dùng rõ ràng cho thông tin đăng nhập sẽ được chống lại chính sách của họ và ngay cả khi nó quay ra nó không phải là, có các thông tin sẽ không giúp bạn nhiều, bởi vì bạn phải nhập/gửi cho họ một nơi nào đó. Nhưng tất cả các cơ chế xác thực iCloud được thiết kế để yêu cầu xác thực chỉ bởi người dùng cuối.

Đây là lý do tại sao tôi không tin rằng chỉ có thể sử dụng thông tin đăng nhập của người dùng và có quyền truy cập vào tất cả dữ liệu iCloud của họ. Bây giờ, 2 xu của tôi về lý do tại sao Sunrise hoạt động:

Theo tôi hiểu, ứng dụng Sunrise hoạt động, vì dữ liệu lịch được thiết kế để chia sẻ qua CalDav, hoạt động trên URL cụ thể, vì vậy bạn có thể nhập và liên kết lịch của bạn trong các ứng dụng khách khác nhau của lịch. URL có thể được tìm ra với một chút điều tra. CalDAV tương tự như IMAP và POP3 để truy cập hộp thư.

Rất tốt để xây dựng thêm một chút về loại dữ liệu bạn đang cố gắng trích xuất (ứng dụng của Apple cụ thể, ứng dụng dành cho nhà phát triển, tài liệu, cặp khóa-giá trị hoặc thứ gì đó khác) và tôi hoặc người dùng khác có thể giúp bạn thêm nữa.

Các vấn đề liên quan