简体   繁体   English

AWS Cognito:“此身份池不支持未经身份验证的访问权限。”

[英]AWS Cognito: “Unauthenticated access is not supported for this identity pool.”

i am fighting with an issue "Unauthenticated access is not supported for this identity pool." 我正在解决一个问题"Unauthenticated access is not supported for this identity pool." from AWS Cognito in my Swift iOS Application. 来自我的Swift iOS应用程序中的AWS Cognito。 I previously used Firebase for authentication & storage and have decided to migrate to AWS Mobile Hud for reasons outside the scope of this question. 我以前使用Firebase进行身份验证和存储,并且已决定迁移到AWS Mobile Hud,原因超出了此问题的范围。

I use / have set up: 我用/已设置:

  1. Amazon Mobile Hud to provision all services 亚马逊移动Hud提供所有服务
  2. AWS Cognito through Mobile Hud for Authentication / Identities AWS Cognito通过Mobile Hud进行身份验证/身份验证
  3. Facebook as Identity Provider activated Facebook作为身份提供商激活
  4. AWS DynamoDB activated in console but not yet used AWS DynamoDB在控制台中激活但尚未使用
  5. AWS S3 activated in console but not yet used AWS S3在控制台中激活但尚未使用

I downloaded the sample app generated for my project and run it. 我下载了为我的项目生成的示例应用程序并运行它。

Through the sample app, I am able to successfully register / authenticate through Facebook and Cognito. 通过示例应用程序,我能够通过Facebook和Cognito成功注册/验证。

What works?: I have integrated all SDK/Frameworks of AWS into my project and am able to build successfully (note: all AWS frameworks are integrated through cocoapods, except 'AWSMobileHubHelper' as a static framework). 什么有效?:我已经将AWS的所有SDK /框架集成到我的项目中并且能够成功构建(注意:所有AWS框架都通过cocoapod集成,除了'AWSMobileHubHelper'作为静态框架)。

I can build the app and it opens 我可以构建应用程序并打开它

What does not work?: The app crashes immediately after opening up with the following crash log: 什么不起作用?:使用以下崩溃日志打开后,应用程序立即崩溃:

2017-02-13 15:43:49.825 dates[19823:463495] AWSiOSSDK v2.5.0 [Debug] AWSURLSessionManager.m line:566 | -[AWSURLSessionManager printHTTPHeadersForResponse:] | Response headers:
{
    Connection = "keep-alive";
    "Content-Length" = 111;
    "Content-Type" = "application/x-amz-json-1.1";
    Date = "Mon, 13 Feb 2017 14:43:49 GMT";
    "x-amzn-ErrorMessage" = "Unauthenticated access is not supported for this identity pool.";
    "x-amzn-ErrorType" = "NotAuthorizedException:";
    "x-amzn-RequestId" = "d4f8ec82-f1fa-11e6-bd81-3727ca129d86";
}
2017-02-13 15:43:49.826 dates[19823:463495] AWSiOSSDK v2.5.0 [Debug] AWSURLResponseSerialization.m line:63 | -[AWSJSONResponseSerializer responseObjectForResponse:originalRequest:currentRequest:data:error:] | Response body:
{"__type":"NotAuthorizedException","message":"Unauthenticated access is not supported for this identity pool."}
2017-02-13 15:43:49.826 dates[19823:463495] AWSiOSSDK v2.5.0 [Error] AWSIdentityProvider.m line:309 | __52-[AWSCognitoCredentialsProviderHelper getIdentityId]_block_invoke.255 | GetId failed. Error is [Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=8 "(null)" UserInfo={__type=NotAuthorizedException, message=Unauthenticated access is not supported for this identity pool.}]
2017-02-13 15:43:49.826 dates[19823:463452] AWSiOSSDK v2.5.0 [Error] AWSCredentialsProvider.m line:565 | __44-[AWSCognitoCredentialsProvider credentials]_block_invoke.349 | Unable to refresh. Error is [Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=8 "(null)" UserInfo={__type=NotAuthorizedException, message=Unauthenticated access is not supported for this identity pool.}]
2017-02-13 15:43:49.827 dates[19823:463379] -[AWSTask exception]: unrecognized selector sent to instance 0x60800027af00
2017-02-13 15:43:49.828 dates[19823:463379] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AWSTask exception]: unrecognized selector sent to instance 0x60800027af00'
*** First throw call stack:
(
    0   CoreFoundation                      0x0000000112abcd4b __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x000000011251e21e objc_exception_throw + 48
    2   CoreFoundation                      0x0000000112b2cf04 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   CoreFoundation                      0x0000000112a42005 ___forwarding___ + 1013
    4   CoreFoundation                      0x0000000112a41b88 _CF_forwarding_prep_0 + 120
    5   dates                               0x000000010ef4e917 __35-[AWSIdentityManager completeLogin]_block_invoke_2 + 263
    6   libdispatch.dylib                   0x00000001150f4978 _dispatch_call_block_and_release + 12
    7   libdispatch.dylib                   0x000000011511e0cd _dispatch_client_callout + 8
    8   libdispatch.dylib                   0x00000001150fe8a4 _dispatch_main_queue_callback_4CF + 406
    9   CoreFoundation                      0x0000000112a80e49 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
    10  CoreFoundation                      0x0000000112a4637d __CFRunLoopRun + 2205
    11  CoreFoundation                      0x0000000112a45884 CFRunLoopRunSpecific + 420
    12  GraphicsServices                    0x0000000116249a6f GSEventRunModal + 161
    13  UIKit                               0x0000000112ee0c68 UIApplicationMain + 159
    14  dates                               0x000000010edac89f main + 111
    15  libdyld.dylib                       0x000000011516a68d start + 1
    16  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

What have i tried? 我试过了什么?

  1. Compared my code with the sample app: Result - 1:1 match as far as I see 将我的代码与示例应用程序进行比较:结果 - 据我所知,1:1匹配
  2. Compared Info.plist with the sample app: Result - 1:1 match (i copied the relevant parts) 将Info.plist与示例应用程序进行比较:结果 - 1:1匹配(我复制了相关部分)
  3. Remove all frameworks, clean, rebuild 删除所有框架,清理,重建
  4. Clean all simulator data (was referenced by another similar quesiton) 清理所有模拟器数据(由另一个类似的问题引用)
  5. Tried approaches from related questions: (check unauthenticated access) 从相关问题尝试的方法:(检查未经身份验证的访问)

What happens if I allow unauthenticated access?: the same, but a different response header :( 如果我允许未经身份验证的访问会发生什么?:相同,但不同的响应标头:(

2017-02-13 16:25:06.213 dates[25642:544704] AWSiOSSDK v2.5.0 [Debug] AWSURLSessionManager.m line:566 | -[AWSURLSessionManager printHTTPHeadersForResponse:] | Response headers:
{
    Connection = "keep-alive";
    "Content-Length" = 1612;
    "Content-Type" = "application/x-amz-json-1.1";
    Date = "Mon, 13 Feb 2017 15:25:05 GMT";
    "x-amzn-RequestId" = "98feb58d-f200-11e6-9de9-471b5799b768";
}
2017-02-13 16:25:06.213 dates[25642:544704] AWSiOSSDK v2.5.0 [Debug] AWSURLResponseSerialization.m line:63 | -[AWSJSONResponseSerializer responseObjectForResponse:originalRequest:currentRequest:data:error:] | Response body:
{"Credentials":{"AccessKeyId":"ASIAISM6BUQFY6FJ4EFQ","Expiration":1.487003106E9,"SecretKey":"rlILMNjU7oeg1NEYgj1y3E1v/5L3IOJNWtZ7jsOf","SessionToken":"AgoGb3JpZ2luEFMaCWV1LXdlc3QtMSKAAgM0QlWyWW3xJ0H3+suiuuekGl6LUznBSikSWbYgLD9C6nPywAyKIlI5EVSN0q7o80q30ZWX8KE/Yjwo+axii1v/A2Qz9gqXWz4HRFwaJnHLE46nNLSJNNkNUhMkYy+azMCdKnZteUEtBzvHcWAVsyqAHtRSzKjGimXfs8WXs7d14g0GabTm73qj7tvOa4Facnetc9aUZjyLLKBsyOAnJKXwAN1xZja91qGbK2Tirfy2qu4kSDtJKcEPaSEnJTBqBlwdXS9D9JTOQNscNZEfpJpFNLdDmJ6ltbS/BwBNv1GscFjdQ2Dx7I76NwX4MO9qOdiqmxmmgK6p7ikO/Jxuq9Yq9AUI2f//////////ARAAGgwwNjU2MzE4NjczMDEiDHmDLk175KOE3qkTMCrIBTLbj5wXIk725/uIAfGFs0IBvnPMNHKRf6j0iuq1sD2gKy4ScFQQM0TgYskoKvNfuuy200BehQxwxpzkaD/C2mBxpGGbhnAT2s4lAeJzx6UtXmzfihpjI2elbjc7wlRLbQgHq9dY3EACVZ9Ab7WvIjD3vht6eOz3WAEO/J1ocKdBiRjdR+6rp9ALJPr94lHC6ERvmMs1jBHh3dgwTNxizz6ChoklkELvL9tb6m5UZPuhao2k9k/3NRiB03HzvlqBm71ODAQQfTiyOGbM/5BycCfSk2z18GpnO/uSJYzWbzO5KQaGW7KqPe+cWZNtX9cXcp1LXtJSK4I0EnwAuqgBlTQ0Ul4cVRDI2lxHkWgKUKpNgIBh4JjzdTJRnE1e0g5d/YmK+OuDmZ5AqwvD5l1f073YuoYgZ9XWYrWU3CTW3UnZitlGeLA7bFCuTf6xklprHqbxMxYdNmqPwI0R/GqbaQNG4rkiBWasCDhTXw0+/RHwBJwT+6lul6V0BSOR5hxKogO+oAxbJIQrC06YJdwxipSQo34yfan13hlEjOQ5pDxvF01ZR/+JCo2yGfA7DDjt3Q42EgvNEVrFhGMjdJvXa1UPKcbRj2B5JpJVO0aplJWcKNHPOkS0knHi7DtFnHNVUY1FKSLFzeIB7b5CYdHVl9vIG1XTp6iFQqT0M9fFnMzpB/tFv9VGTwF750Cx31SEBeMCXpOEYbZACScnjUj3j3l/JOf7Q0GTMiBUYudoXM5HBlsV9yaU8Qbe4V3Lg53g6HPsCbM7DqcDuPT7V4iphoOmK4G3/lFVkScTrOaO55cJ7jr3LYoIECEDbqWfheCCOyp1gKT6DkiBm6+JQvougWxqsUQzljBLMHzmgoWIl5+h5uvC1q1c3tnF/j/cIVzMqGobPfY25BftoZq6azFvaL/jXIGIDaUT9os0WR0mWybmCCd9Gwo25zsw0p+HxQU="},"IdentityId":"eu-west-1:a9ef3c7f-8be8-411c-9249-48df6f04f4ac"}
2017-02-13 16:25:06.220 dates[25642:544675] -[AWSTask exception]: unrecognized selector sent to instance 0x6180002656c0
2017-02-13 16:25:06.222 dates[25642:544675] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AWSTask exception]: unrecognized selector sent to instance 0x6180002656c0'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010ff21d4b __exceptionPreprocess + 171
    1   libobjc.A.dylib                     0x000000010f98321e objc_exception_throw + 48
    2   CoreFoundation                      0x000000010ff91f04 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   CoreFoundation                      0x000000010fea7005 ___forwarding___ + 1013
    4   CoreFoundation                      0x000000010fea6b88 _CF_forwarding_prep_0 + 120
    5   dates                               0x000000010c43d917 __35-[AWSIdentityManager completeLogin]_block_invoke_2 + 263
    6   libdispatch.dylib                   0x0000000112559978 _dispatch_call_block_and_release + 12
    7   libdispatch.dylib                   0x00000001125830cd _dispatch_client_callout + 8
    8   libdispatch.dylib                   0x00000001125638a4 _dispatch_main_queue_callback_4CF + 406
    9   CoreFoundation                      0x000000010fee5e49 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
    10  CoreFoundation                      0x000000010feab37d __CFRunLoopRun + 2205
    11  CoreFoundation                      0x000000010feaa884 CFRunLoopRunSpecific + 420
    12  GraphicsServices                    0x00000001136aea6f GSEventRunModal + 161
    13  UIKit                               0x0000000110345c68 UIApplicationMain + 159
    14  dates                               0x000000010c29b89f main + 111
    15  libdyld.dylib                       0x00000001125cf68d start + 1
    16  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

The more i look at it it seems to be an issue with AWSTask. 我看的越多,它似乎是AWSTask的一个问题。

Any ideas where I might head next? 我可能会接下来的任何想法?

To get past this issue with AWSCognitoIdentityUserPoolConfiguration returning no access, am exploring turning on the un-authenticated access. 要通过AWSCognitoIdentityUserPoolConfiguration返回此问题而无法访问,我正在探索启用未经身份验证的访问权限。

When doing that, the App Delegate runs and gets unauthorized access. 执行此操作时,App Delegate会运行并获取未经授权的访问权限。 Then, in the user signup, will uses Sign In API in a Login ViewController to then get AWS credentials for authenticated access. 然后,在用户注册中,将在Login ViewController中使用Sign In API,然后获取AWS凭据以进行身份​​验证访问。

This allows us (if we want) to access DynamoDB, Lambda, while awaiting the user to logon the first time. 这允许我们(如果需要)访问DynamoDB,Lambda,同时等待用户第一次登录。 We can control what the app has to access by setting the correct policies for both authenticated and unauthenticated users. 我们可以通过为经过身份验证和未经身份验证的用户设置正确的策略来控制应用程序必须访问的内容。

This doc, although simple, has the best Swift example that I've found so far. 这个文档虽然很简单,却有迄今为止我发现的最好的Swift示例。

http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-integrating-user-pools-with-identity-pools.html http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-integrating-user-pools-with-identity-pools.html

Onto the next step! 进入下一步!

AWS通过Swift 3支持进行了更新,解决了该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 AWS / iOS / Cognito:此身份池不支持未经身份验证的访问 - AWS / iOS / Cognito: unauthenticated access is not supported for this identity pool 该身份池和用户池不支持未经身份验证的访问 - Unauthenticated access is not supported for this identity pool with user pool 使用DynamoDB时,此标识池不支持未经身份验证的访问 - Unauthenticated access is not supported for this identity pool, while using DynamoDB iOS-使用Facebook登录,但仍然得到:“此身份池不支持未经身份验证的访问” - iOS - Login in with Facebook but still getting: “Unauthenticated access is not supported for this identity pool” AWS Cognito联合身份池-身份验证角色 - AWS Cognito Federated Identity Pool - Role on Authentication 将DynamoDB与Cognito一起使用:令牌不是来自此身份池的受支持提供商 - Using DynamoDB With Cognito: Token is not from a supported provider of this identity pool AWS Cognito是否必须具有未经身份验证的角色? - Is Unauthenticated role mandatory for AWS Cognito? 推送到github时是否包含AWS Cognito身份池ID是否保存 - Is it save to include AWS Cognito Identity Pool ID when pushing to github 如何使用Cognito Identity以信任关系指定Amazon AWS User Pool - How to specify Amazon AWS User Pool in trust relationship with Cognito Identity 卓(AWS):如何根据Cognito池正确认证用户并将其用于Cognito联合身份? - AWS: How to properly authenticate a user against Cognito Pool and use it for Cognito Federated Identity?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM