2016-11-28 5 views
0

我々はCognitoへの非認証アクセスを使用していたiOSアプリケーションに取り組んでいます。アイデンティティプロバイダ:Cognito User Poolsが追加されました。複数のデバイスとiOSのAWS Cognito認証

我々は同じ(予想通り)、デバイスAが認証への認証されていないからログインプロセスを、ない場合には、Cognito IDはとどまることを見ています。その後、デバイスBがログインすると、Unauthenticated to Authenticatedと表示されます。ユーザーはデバイスAから認証済みのCognito IDを取得することが期待されますが、そうではありません。

はそうであっても、おそらく彼らはすべてのデバイスAからCognito IDに移行しましたか?それはまた、そうではないようです。どちらのデバイスも個別のCognito IDを持っていますが、Cognito User Poolsの同じユーザーアカウントを使用しています。しかしどちらも、Cognito IDを共有していない。

誰かが、我々は有効なワークフローで何をしているか、そしておそらく私たちは間違っているかもしれないものを確認することはできますか?

当社は、ユーザーにそのデータを結びつけるために、バックエンドサーバーにCognito IDを格納しているが、Cognito IDのが突然変化すると、そのハードは良い解決策を思い付きます。

答えて

3

あなたは正しい、AWS Cognito identityIdは、彼は2つの異なるデバイス上で認証されている場合でも、認証されたユーザーのために同じになります。あなたが記述何

が予想される動作ではありません。

は、おそらくあなたは「本当に」認証されません。 「本当に」認証されたとはどういう意味ですか?それは適切なidentityIdを(それが同じになるようになったときにそれはだアイデンティティプロバイダに行き、ログイン辞書を取得します(その後、割り当てられた資格情報プロバイダであるので、あなたが、キーチェーンを拭くと資格を得るためのプロセスを経ていることを意味し他の装置として))。

あなたが「本当に」フェデレーションIDのためにAWSコンソールに見て、そしてアイデンティティのブラウザで見ることによって認証される場合は、伝えることができます。問題のアイデンティティの「ログイン」カウントは0であってはならない...(あなたのケースでは)1が表示され、アイデンティティをクリックすると、プールで認証されているはずです。

修正?ログインしてセッションを取得した後、「IDの資格情報を取得する」必要があります(ios sdkは「資格情報」メソッドです)。

このリンクはあなたのフィードバックのためのcognito notes and diagram

+0

感謝を助けるかもしれない、我々はまだ私たちの実装でバリケードをヒットしている、私たちも、比較するために、あなたのgithubの上のプロジェクトの例をクローニングし、実装が非常に接近しています。 – Trihedron

+0

ログイン中に表示される主な問題は、getSessionがトークンを返さないことです。 userPoolUser(AW​​SCognitoIdentityUser).isLoggedInは、getSession continueブロックの内部では常にfalseであり、credentialsメソッド内にあります。ユーザーをログインする必要があるようです。getSessionに間違ったパスワードを指定しても、成功したユーザー/パスワードとまったく同じではないかのように完了ブロックを呼び出すことができます。 – Trihedron

+1

interactiveAuthenticationDelegateを使用している場合、didCompletePasswordAuthenticationStepWithErrorデリゲートメソッドが成功と失敗の両方で呼び出されます。オプションのパラメータ "error"は、成功の場合はnilです。 ...または多分uidとパスワードでgetSessionをやっているだけかもしれません。関係なく、あなたは資格情報プロバイダが正しくプールにフックアップされており、AWSCognitoCredentialsProviderと資格情報プロバイダを作成するときにそれが行われている... identityProviderManagerとしてPOOL_IDとあなたのuserpool(プール)を指定することを確認する必要があります。こうすることで、pool.loginsが呼び出されます。 – Bruce0

関連する問題