2016-02-10 232 views
3

這是我的問題,我使用Parse解決方案構建了一個應用程序。在這個應用程序中,我使用了Parse的基本認證。解析死亡後,我需要遷移。CloudKit認證登錄/密碼

我想用CloudKit解決方案來實現身份驗證,但我不確定這是一個很好的實踐。我瞭解到,Cloudkit基本身份驗證基於用戶蘋果帳戶。但我需要使用登錄名/密碼進行身份驗證。

在Parse中沒有類似「密碼」的字段,所以我不知道如何以安全的方式將密碼存儲在我的表Users中。而且我不確定在公共部分保存密碼是否安全。

我想知道在CloudKit(登錄/密碼)中是否有良好的實踐基礎認證?

在此先感謝您的幫助;)

PS:其他解決方案應該是轉移到火力點,但我更喜歡CloudKit的邏輯的時刻。

回答

1

當您選擇CloudKit時,您必須使用Apple的iCloud認證,並且不能存儲用戶的密碼。

但是你可以建立一個額外的認證層。當用戶使用iCloud登錄時,您可以要求他選擇一個密碼,您可以使用私人(!)記錄類型(引用iCloud用戶)來存儲密碼。

這樣,用戶需要先使用iCloud登錄,然後在您的應用中輸入應用特定的密碼。

+0

感謝您的回覆,我沒有指定的是我的應用程序是用於關聯的,他們需要控制用戶,這是在後端創建用戶的關聯,如果您是創建帳戶的用戶,則無法創建帳戶不是項目的一部分。 Cloudkit可能不是我的問題的解決方案。 – Hikosei

+0

你可以讓他們輸入用戶名和密碼。然後首先檢查後端系統是否正常,如果沒有問題,請將其連接到iCloud用戶(通過將用戶名和密碼哈希以及iCloud ID保存在單獨的用戶recordType中)。之後,用戶就可以被吸引進入iCloud。他的iCloud帳戶連接到他在後端系統中的帳戶。 –

+0

我明白你的答案,但我的問題是我沒有後端系統,它是通過解析來管理的。所以我正在尋找解析的替代品。在我的情況下,認爲由於這種認證,CloudKit無法完成這項工作。我正在尋找firebase的方向。非常感謝你的幫助 – Hikosei

5

要使用CloudKit管理登錄/密碼,而不使用後端登錄代碼,但讓用戶使用最近推出的Cloudkit服務器密鑰訪問從其他位置登錄(Web應用程序,Android應用程序等),則需要管理裏面的應用程序登錄邏輯:

工作流程:

A.用戶註冊

  1. 在Cloudkit Dashboard中的公共數據庫中創建一個 「用戶」 容器。

  2. 當用戶在註冊時輸入密碼時,加密密碼。

  3. 如果用戶名/電子郵件已存在,請向「用戶」容器發出請求。如果是這樣,警告用戶。如果沒有,繼續這個過程。
  4. 在Cloudkit的公共「用戶」容器中上傳電子郵件/用戶名和加密的密碼。還包括用戶的iCloudId。

B.用戶登錄

  1. 當用戶輸入自己的用戶名/電子郵件地址和密碼,使用用戶名/電子郵件查詢「用戶」加密的密碼。如果請求爲零,則表示該用戶名/電子郵件不存在於數據庫中。
  2. 如果數據庫返回加密密碼,請在應用程序中對其進行解密,並將其與用戶在登錄表單中鍵入的密碼進行比較。如果它們不匹配,則警告用戶密碼不匹配。

C.用戶忘記密碼

  • 爲了讓用戶更改密碼,用戶必須在其iCloud帳戶,以比較該帳戶的iCloudId請求密碼登錄更改等同於CloudKit中保存的用戶的iCLoudId。
  • 或者,您可以在註冊時向用戶詢問安全問題,然後在用戶請求更改密碼時檢查這些問題。

這不是一個建議的解決方案(在可擴展性方面),但我相信它會回答你的問題。