ios - Amazon Cognito,自定义 OpenID 提供商, "Invalid login token"错误

标签 ios wordpress openid amazon-cognito

我尝试将 Cognito 与自定义 OpenID 提供商结合使用,以访问我的 iOS 应用程序中的 AWS 服务。作为自定义 OpenID 提供商,我使用带有 WP OAuth 服务器插件的 WP 服务器。我从 IAM 控制台成功创建了身份提供商(检查了指纹,它是正确的)。之后,我使用默认角色创建了身份池,并在“身份验证提供程序”-> OpenID 选项卡部分中选择了之前创建的提供程序。现在在 iOS 应用程序中,我尝试使用以下代码获取identityId:

AWSCognitoCredentialsProvider *credentialsProvider =
    [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1
                                               identityPoolId:poolId];
NSString *domain = @"my.dev.somename.com";
NSString *accessToken = <correct and actual oauth access token>;
credentialsProvider.logins = @{domain: accessToken};

AWSServiceConfiguration *configuration =
        [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1
                                    credentialsProvider:credentialsProvider];

    [AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;

[[credentialsProvider getIdentityId] continueWithBlock:^id(AWSTask *task) {
        if (task.error) {
            NSLog(@"Error: %@", task.error.localizedDescription);
        }
        else {
            NSLog(@"identityID: %@", task.result);
        }
        return nil;
    }];

每次我都会遇到“GetId 失败...登录 token 无效”的情况。错误(NotAuthorizedException)。 同时,访问 token 有效且未过期,因为我可以使用它与服务器进行通信。创建提供者期间使用的受众和代码中使用的 poolId 肯定是正确的。

我不确定这是否有帮助,但需要提及的是,我们的服务器支持使用 Facebook 登录,因此为了测试,我已将 Facebook 作为经过身份验证的提供商添加到身份池中,并且它起作用了:我能够获取 IdentityId就这样。

有人可以帮忙吗?

更新:

斯科特的回答是正确的。这里唯一的问题 - 无法从 WP OAuth 服务器插件请求 OpenID token (至少对于我正在使用的版本 3.1.5 而言)。看来该插件仅支持 3-legged 授权流程,而我们这里有 2-legged。因此,我最终得到了使用“开发人员验证身份 Authflow”(请参阅​​ docs )和自定义开发人员身份验证提供程序( code example )的自定义 WP 插件。希望这会对某人有所帮助。

最佳答案

确保您使用的授权类型返回有效的 OpenID Connect token (WP OAuth 服务器看起来支持不同的 token /授权类型)。您可以使用jwt.io解码后端颁发的 token 。验证有关 token 的以下信息:

  1. iss 参数必须与登录映射中使用的 key 匹配(例如 login.provider.com )。
  2. 签名必须有效。签名必须可通过 RSA 公钥进行验证。
  3. 托管公钥的证书指纹与您的 OpenId Connect 提供商上配置的指纹相匹配。
  4. 如果存在 azp 参数,请对照 OpenId Connect 提供商中列出的客户端 ID 检查该值。
  5. 如果 azp 参数不存在,请对照 OpenId Connect 提供商中列出的客户端 ID 检查 aud 参数。

关于ios - Amazon Cognito,自定义 OpenID 提供商, "Invalid login token"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32203478/

相关文章:

ios - 错误(Xcode): File not found:/Applications/Xcode.应用程序/内容/开发者/工具链/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a

ios - Rails API 与 NSDate - 比较日期时的精度问题

ios - 使用 UIImagePickerController 使 UIView 显示相机 View

html - 固定粘性标题

javascript - 使用 wp.media 访问图像标题的 Wordpress 媒体库

ios - Swift - 如何在核心数据中存储 MGLMapView 以在 TableView 上显示它?

html - wordpress 主题的中心页脚

python - 来自 cookie 的 Python MediaWiki 身份验证

openid - 如何解决 OpenID 提供商停机问题?

php - 将 Open ID 与我当前的登录系统合并?