标签: amazon-cognito

CognitoCachingCredentialsProvider错误"在SharedPreferences中找不到有效凭据"

我正在尝试实现亚马逊提供的示例代码以连接到DynamoDb.第一步是客户端的初始化,亚马逊说要在常量类中定义凭证并使用它们:

private void initClients() {
    CognitoCachingCredentialsProvider credentials = new CognitoCachingCredentialsProvider(
            context,
            Constants.ACCOUNT_ID,
            Constants.IDENTITY_POOL_ID,
            Constants.UNAUTH_ROLE_ARN,
            null,
            Regions.US_EAST_1);
Run Code Online (Sandbox Code Playgroud)

当我执行代码时,我得到以下内容:D/CognitoCachingCredentialsProvider:从SharedPreferences D/CognitoCachingCredentialsProvider加载凭据:在SharedPreferences中找不到有效凭据

然后,我创建了一个SharedPreferences文件并将凭据放入其中,但仍然遇到相同的错误.在这种情况下,有谁知道CognitoCachingCredentialsProvider在寻找什么以及在哪里?

android amazon-cognito

1
推荐指数
2
解决办法
4401
查看次数

可以在AWS凭证提供程序上将经过身份验证的更改回未经身份验证吗?

我知道我们可以通过向AWSCognitoCredentialProvider提供"登录"来将未经身份验证的用户更改为经过身份验证.我已经实现了FB登录,效果很好.

现在问题是,如果用户想要在没有FB凭证的情况下再次登录该怎么办?就像他之前将FB帐户链接到应用程序之前的方式一样.因此,我需要清除与其FB凭证关联的凭据提供程序,并将其返回给未经身份验证的角色.

我试过的是使用清除缓存凭证方法,但是一旦我初始化没有登录的新凭据提供程序,就会发生错误.错误是关于刷新失败,openIDGet失败.

有人可以帮忙解决这个问题吗?

谢谢!

amazon-web-services amazon-cognito

1
推荐指数
1
解决办法
261
查看次数

Cognito和DynamoDB:"未授权执行:dynamodb:资源上的UpdateItem"

在完全遵循Android上的Amazon DynamoDB"入门"指南后,我最终得到了所有正确创建的表,角色策略等以及该代码:

CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
        getApplicationContext(),
        "eu-west-1:01234567-abcd-8901-efab-234567890123", // Identity Pool ID
        Regions.EU_WEST_1 // Region
);

AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(credentialsProvider);
final DynamoDBMapper mapper = new DynamoDBMapper(ddbClient);

final Book book = new Book("My new book"); // Simplified version of Book
new Thread(new Runnable() {
    @Override
    public void run() {
        mapper.save(book);
        Log.v("Sync", "Book saved!");
    }
}).start();
Run Code Online (Sandbox Code Playgroud)

重要提示,与教程最大的(但无法察觉的)差异是我在欧洲,所以我的地区是eu-west-1(爱尔兰).

然而,如果正确地遵循了一切,我会收到以下错误:

com.amazonaws.AmazonServiceException: User: arn:aws:sts::012345678901:assumed-role/Cognito_BookUnauth_Role/CognitoIdentityCredentials is not authorized to perform: dynamodb:UpdateItem on resource: arn:aws:dynamodb:us-east-1:012345678901:table/Books (Service: AmazonDynamoDBv2; Status Code: 400; Error …
Run Code Online (Sandbox Code Playgroud)

android amazon-web-services amazon-dynamodb amazon-cognito aws-sdk

1
推荐指数
1
解决办法
3242
查看次数

AWS Cognito HTTP身份验证

我尝试使用AWS API Gateway,Lambda和Cognito设置测试API,以确保访问安全。由于我是AWS领域的新手,因此我不确定如何使用例如 我首先必须通过Cognito和客户端登录的客户端上的请求库创建到AWS服务的“已登录”发布请求。AWS Api,然后使用我得到的信息来创建一个已签名的请求,如下所示:http : //docs.aws.amazon.com/general/latest/gr/sigv4_signing.html

如果我走错了路,请告诉我并指出正确的方向:)

amazon-web-services amazon-iam amazon-cognito aws-api-gateway

1
推荐指数
1
解决办法
1149
查看次数

Amazon Cognito登录失败:Android中的SRP错误

我正在尝试在Android中使用Amazon Cognito登录。凭据-用户名和密码有效,但出现以下错误

com.amazonaws.mobileconnectors.cognitoidentityprovider.exceptions.CognitoInternalErrorException:SRP错误

原因= java.lang.ArrayIndexOutOfBoundsException:长度= 1; 索引= 1

Amazon Cognito用户注册(注册)和验证很酷!但由于上述错误,我无法通过登录流程。

任何对此的帮助将是巨大的拯救:) TIA!

android amazon-web-services amazon-cognito

1
推荐指数
1
解决办法
954
查看次数

管理Lambda的cognito用户属性 - 他们必须登录吗?

我已经使用Cognito SDK完成了许多get/set属性工作客户端,但现在我需要能够通过Lambda函数(在step函数中)从后端修改用户的自定义属性.

但是在该过程的客户端版本中,我需要检索当前Cognito用户,因为他们之前已经过身份验证.这是代码:

var poolData = this.poolData;
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var cognitoUser = userPool.getCurrentUser();
if (cognitoUser != null) {
    cognitoUser.getSession(function(err, session) {
      var attributeList = [];
      var attribute = {
          Name : attr,
          Value : value
      };
      var attribute = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(attribute);
      attributeList.push(attribute);
      console.log("attributeList", attributeList);

      cognitoUser.updateAttributes(attributeList, function(err, result) {
        callback(err, result);
      });
    });
}
Run Code Online (Sandbox Code Playgroud)

但在后端版本中,我在技术上管理用户.

那么,我如何从lambda函数修改用户的属性数据?用户不一定先登录的地方?

amazon-web-services amazon-cognito

1
推荐指数
1
解决办法
988
查看次数

AWS Cognito登录用户而无需来自服务器的用户名和密码

我的服务器是否可以在没有用户名和密码的情况下获取用户的凭据,以便将其发送回客户端?

我有另一种身份验证方法,我认为这样做比将令牌存储在过期的数据库中要容易得多。

amazon-cognito aws-sdk

1
推荐指数
1
解决办法
1307
查看次数

AWS Appsync-无法找到用户池客户端ID

现在,我正在使用AWS AppSync和Cognito。我编写了AppSync的架构。但是我无法在“查询”选项卡中测试架构。正在运行的查询需要用户身份验证,而我找不到用户池客户端ID。在哪里可以找到它?

在此处输入图片说明 在此处输入图片说明

amazon-web-services amazon-cognito aws-appsync

1
推荐指数
2
解决办法
1460
查看次数

在Vue.js应用中的哪里调用axios.interceptors.request.use?

我正在尝试Amazon Cognito Vuex Module在我的Vue.js应用中使用,并axios使用以下代码使所有请求自动通过凭据:

// Add authentication token to each request
axios.interceptors.request.use(async config => {
    const response = await store.dispatch('getUserSession');
if (response && response.accessToken && response.accessToken.jwtToken) {
    config.headers.AccessToken = response.accessToken.jwtToken;
}
    return config;
});
Run Code Online (Sandbox Code Playgroud)

据我所知,这是可能应该对所有组件执行的通用代码,但尚不清楚在何处添加它。大概到App.vue还是到index.js?在App.vue我有:

import Vue from 'vue';
import VueRouter from 'vue-router';
import Vuetify from 'vuetify';

    Vue.use(Vuetify);
    Vue.use(VueRouter);

export default new Vue({}).$mount('#app');
Run Code Online (Sandbox Code Playgroud)

index.js

export default new Vuex.Store({
  state: {
  ...
Run Code Online (Sandbox Code Playgroud)

javascript vue.js amazon-cognito axios vuejs2

1
推荐指数
1
解决办法
1448
查看次数

如何仅使用`ctx.identity.cognitoIdentityId`来获取AppSync Resolver中的相关Cognito用户池用户数据?

之前,当我们仅使用Cognito用户池启动项目时,我创建了很多解析器,并通过Cognito用户池数据进行了验证,例如:

#if( $ctx.identity.claims["custom:role"] == "admin" )
...some code...(get data, invoke lambda, e.t.c.)
#else
  $utils.unauthorized()
#end
Run Code Online (Sandbox Code Playgroud)

但是后来我们需要其他授权提供者(Facebook,Google等)。因此,我们迁移到了cognitoIdentityId,但是在AppSync解析器中从Cognito用户池中获取用户数据时出现了问题。在AWS Lambda中,我通过cognitoIdentityAuthProvider 找到了 Cognito用户池ID,并且可以获取Cognito用户属性,如UserAttributes下面的代码所示:

...
...
const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({
  apiVersion: '2016-04-18',
});

const getCognitoUserPoolId = (authProvider) => {
  const parts = authProvider.split(':');
  return parts[parts.length - 1].slice(0, -1);
};

// cognitoIdentityAuthProvider, which we pass as an parameter($ctx.identity.cognitoIdentityAuthProvider) from the AppSync resolver
const SUB = getCognitoUserPoolId(cognitoIdentityAuthProvider);

const params = {
  UserPoolId: COGNITO_USER_POOL_ID,
  Username: SUB,
};

try {
  const { UserAttributes } = await …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cognito aws-appsync

1
推荐指数
1
解决办法
332
查看次数