簡體   English   中英

AWS Cognito:登錄后立即進行簽名

[英]AWS Cognito: immediately signed-put after sign-in

語境

我使用展位Cognito用戶池和Cognito身份池來登錄用戶。

我想完成一個簡單的任務,即可在iOS應用程序(Swift應用程序)上登錄用戶。

我的應用基於Mobile Hub幫助的自定義版本,以允許使用Cognito用戶池。 查看帶有Cognito用戶池的Swift示例登錄應用程序(使用aws-mobile hub-helper)

應用程序中有兩個步驟:第一個是僅啟動,第二個是在用戶觸摸“登錄”按鈕后登錄:為了最小化,然后對用戶憑據進行硬編碼。

在第一步期間,用戶必須接收未授權的identityId。 然后在第二步之后,用戶收到一個auth identityId。

行為

在按下登錄(步驟1)之前,有2個對AWS的請求:

  1. AWSCognitoIdentityService.GetId
  2. AWSCognitoIdentityService.GetCredentialsForIdentity

按下簽名后,還有3個請求:

  1. AWSCognitoIdentityProviderService.InitiateAuth
  2. AWSCognitoIdentityProviderService.RespondToAuthChallenge
  3. AWSCognitoIdentityService.GetId

請求5之前-AWSCognitoIdentityService.GetId-用戶已登錄,如AWSIdentityManagerDidSignInNotification上的觀察者所指示。

請求5之后,將檢索IdentityId。 但是在觀察者通知通知AWSIdentityManagerDidSignOutNotification ,用戶立即AWSIdentityManagerDidSignOutNotification

會發生什么?

查看您的日志會有所幫助。 但是您需要意識到的是,使用鑰匙串和NSUserDefaults的cognito sdk會記住內容(會話ID,身份ID等)。 因此,當您第二次運行硬編碼測試時,測試的行為可能會有所不同。 如果要開始清理,請轉到模擬器菜單,然后選擇重置內容和設置(這將清除鑰匙串-存儲會話的內容,並清除NSUserDefaults存儲活動的會話)。

我剛剛在分支AddAllMobileHubDemos上推送了新版本的倉庫。 最新版本的存儲庫已定義3個目標。 登錄,MySampleApp和Dom。 登錄是我的舊登錄應用程序的一個版本,經過修改可以與mobile-hub-helper一起使用。 MySampleApp是一個完整下載的MobileHub應用程序,內置了Cognito用戶池。還有Dom(單頁硬編碼登錄應用程序)。

還要從最新的push中 (在同一存儲庫中)檢查cognito-diagram cognito- diagram.pdf ,其中列出了一些可能的錯誤。 該版本具有我上面描述的功能。

如果您發布日志可能會幫助我更具體。 在某些情況下,AWSIdentityManager會將您注銷(例如,如果您嘗試合並兩個身份...,如果您使用硬編碼的usrname和密碼,然后在不注銷的情況下進行更改,則可能會很好。)

布魯斯

問題解決了!

@ Bruce0帶我回答!

首先,在運行的真實設備上,所有工作均按預期進行。
其次,日志上有很多錯誤: OSStatus error: [-34018] Security error has occurred.

答案是在Xcode的“ Target-> Capabilities”中將“ Keychain Sharing ”功能設置為“ ON ”。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM