2016-09-30 55 views
0

我正嘗試使用其用戶池服務在AWS上設置移動應用程序身份驗證系統。AWS Cognito用戶身份驗證流程需要建議和建議

由於它只是移動應用程序,我只需要OTP/MFA確認選項,比如whatsapp,在這裏我遇到了我的第一個挑戰。

用戶池需要強制使用用戶名和密碼,因爲我使用的是內置MFA,所以我使用phone_number屬性。我不需要任何用戶名或密碼。這是我計劃的。

  1. 允許我的cognito憑證提供程序中的未經身份驗證的身份。
  2. 耗時註冊[用戶名=由cognito,口令= 「somethingxyz」(是的,硬編碼在S/W),PHONE_NUMBER =提供的電話號碼提供身份]
  3. 與OTP成功註冊後通過我的IdToken向證書提供商&分配具有在開始時創建的身份的用戶池用戶。

我的擔憂是,使用硬編碼密碼是好的情況下MFA是完成登錄過程的強制性?是否有可能將用戶池帳戶分配給未經身份驗證的身份並將其轉換爲身份驗證(爲什麼?因爲我在註冊過程中將該身份用作用戶名,並且我不想爲該用戶池帳戶設置其他身份,但在嘗試此操作時我得到了多個隨機錯誤雖然)?

+0

我的應用程序還具有基於OTP驗證手機號碼的登錄功能,因爲我不能給用戶名留白,我也使用手機號碼作爲用戶名。 – desidigitalnomad

+1

我使用手機號碼和國家代碼帶+ +,所以用戶名很容易建立任何用戶選擇國家和provid他的手機號碼。例如。 + 919699XXX02到用戶名:9196999XXX02 –

回答

3

我想stackoverflow不需要建議或建議,所以我會嘗試格式化答案作爲我認爲你問的問題的答案,即「Cognit系統中的角色是什麼以及如何與他們一起實施我的應用「。 (這是我一直試圖回答自己一個月或更長時間的問題)。我的答案用IOS SDK API來描述,但通常會適用。

Cognito身份將發給您「IdentityId的」,但不管理與用戶名或密碼等這些身份的認證

所以,如果你想對活動的任何限制或控制,就需要某種形式的註冊過程。這可以使用Facebook身份,Google+身份或您自己的身份(稱爲BYOI帶來您自己的身份)或新的Cognito用戶池(由AWS提供身份提供商)。 (所有這些「身份提供商」都在幕後提供某種令牌和身份提供商名稱)。這些都沒有提供IdentityId,這是Cognito Identity的工作。

Cognito憑據提供連接一CognitoIdentity IdentityId在AWS的IAM角色,這樣就可以暫時獲得AWS憑據的IdentityId,並使用S3,λ,DynamoDb等

所以不使用用戶名和密碼,手段您沒有任何身份驗證,但您仍然可以擁有身份,Cognito身份會維護它們,並且它們將是唯一的(遵循移動設備)。但是用戶將無法移動到其他設備並保持相同的身份,因爲他/她無法告知Cognito他/她的身份。這就是身份提供者所做的事情(並且他們通過詢問密碼/ mfa等來檢查你是不是在撒謊)。

API和SDK的命名很難理解,但基本上是以CognitoIdentity開頭而沒有單詞的類。提供程序意味着組件是聯合身份系統的一部分,以CognitoIdentityProvider開頭的類是驗證設備/用戶是誰/它說什麼。 CognitoIdentityProviderManager返回一個CognitoIdentityProvider名稱(如「graph.facebook.com」或cognito-idp.us-east-1。amazonaws.com/)和令牌(以及OpenID Connect令牌(OIDC)),讓CognitoIdentity系統知道該用戶已登錄(它通過返回登錄字典[name:token]到CognitoIdentity。場景驗證此令牌與公開識別連接服務器或其他服務器(IE臉譜)。

所以對於你的問題是,你怎麼來唯一地標識用戶(我不知道WhatsApp的)。