Tag: 亚马逊网络服务

使用Amazon AWS Cognito`.well-known / jwks.json`数据无法base64解码一些字段

使用Amazon AWS Cognito 联合身份验证时 ,请在以下位置解析数据: https://cognito-identity.amazonaws.com/.well-known/jwks_uri这看起来像: {"keys":[ {"kty":"RSA", "alg":"RS512", "use":"sig", "kid":"ap-northeast-11", "n":"AI7mc1assO5n6yB4b7jPCFgVLYPSnwt4qp2BhJVAmlXRntRZ5w4910oKNZDOr4fe/BWOI2Z7upUTE/ICXdqirEkjiPbBN/duVy5YcHsQ5+GrxQ/UbytNVN/NsFhdG8W31lsE4dnrGds5cSshLaohyU/aChgaIMbmtU0NSWQ+jwrW8q1PTvnThVQbpte59a0dAwLeOCfrx6kVvs0Y7fX7NXBbFxe8yL+JR3SMJvxBFuYC+/om5EIRIlRexjWpNu7gJnaFFwbxCBNwFHahcg5gdtSkCHJy8Gj78rsgrkEbgoHk29pk8jUzo/O/GuSDGw8qXb6w0R1+UsXPYACOXM8C8+E=", "e":"AQAB"}, … } 这工作正确解码n字段使用此代码( Kotlin调用JDK 8 Base64类 ): Base64.getDecoder().decode(encodedN.toByteArray()) 但是当使用具有以下形式的URL的数据的Cognito 用户池时: https://cognito-idp.${REGION}.amazonaws.com/${POOLID}/.well-known/jwks.json 它具有相同类型的数据,但不会解码。 相反,我最终会遇到以下错误: 非法base64字符5f 由于这是一个下划线_和Base64 URL字母表,我试着改变我的解码为: Base64.getUrlDecoder().decode(encodedN.toByteArray()) 但是,第一组数据不能正确解码,因为它包含Base64 URL编码的/和其他无效字符。 有没有一种方法可以处理这两个jwks数据集同一个解码器?!? 注意: 这个问题是由作者故意编写和回答的( 自我回答问题 ),所以在SO中共享有趣问题的解决方案。

AWS S3未解决的超类型:TransferListener在顶级类Kotlin中

我只是更新了Android Studio到3.0-beta2以及所有的构建工具。 我遇到了一个奇怪的编译错误,我有一个MediaUploader类实现了TransferListener接口(这个用于编译)。 当我使用: class MediaUploader: TransferListener { … } 我得到这个错误: e: Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath: class com.example.sdk.utils.MediaUploader, unresolved supertypes: com.amazonaws.mobileconnectors.s3.transferutility.TransferListener 如果我在MediaUploader中创建一个实例,一切工作: class MediaUploader { private val listener = object: TransferListener { … } } 有谁知道为什么这可能会发生? 如果可能的话,我想避免创建额外的对象(更多为组织的原因)。

Kotlin和DynamoDBMapper SaveBehavior

是否可以在Kotlin中正确使用SaveBehavior.UPDATE的SaveBehavior.UPDATE? // All save operations will use the UPDATE behavior by default DynamoDBMapper mapper = new DynamoDBMapper(dynamoDBClient, new DynamoDBMapperConfig(SaveBehavior.UPDATE)); 该文件指出: 更新(默认) UPDATE不会影响保存操作中的未建模属性 ,而已建模属性的空值将从DynamoDB中的该项中删除它。 但是,在Kotlin中,您无法定义未建模的属性(您必须将它们分配给null或值)。 因此,没有设置的任何属性将实际清除数据库中的字段(null将清除),或将其分配给您的默认值。 我可以使用SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES但他们失去了清除数据库中的字段的能力。 参考: https : //aws.amazon.com/blogs/developer/using-the-savebehavior-configuration-for-the-dynamodbmapper/