Estou preso no processo "Conjuntos de usuários do Amazon Cognito Identity".
Eu tentei todos os códigos possíveis para autenticar usuários em cognito userpools. Mas sempre recebo o erro "Erro: não é possível verificar o hash secreto do cliente 4b ******* fd".
Aqui está o código:
AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:b64bb629-ec73-4569-91eb-0d950f854f4f'
});
AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:b6b629-er73-9969-91eb-0dfffff445d'
});
AWSCognito.config.update({accessKeyId: 'AKIAJNYLRONAKTKBXGMWA', secretAccessKey: 'PITHVAS5/UBADLU/dHITesd7ilsBCm'})
var poolData = {
UserPoolId : 'us-east-1_l2arPB10',
ClientId : '4bmsrr65ah3oas5d4sd54st11k'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
Username : '[email protected]',
Pool : userPool
};
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.confirmRegistration('123456', true,function(err, result) {
if (err) {
alert(err);
return;
}
console.log('call result: ' + result);
});
amazon-web-services
amazon-cognito
Ronak Patel
fonte
fonte
Respostas:
Parece que atualmente o AWS Cognito não manipula perfeitamente o segredo do cliente. Ele funcionará em um futuro próximo, mas, por enquanto, ainda é uma versão beta.
Para mim, está funcionando bem para um aplicativo sem um segredo do cliente, mas falha em um aplicativo com um segredo do cliente.
Portanto, no seu pool de usuários, tente criar um novo aplicativo sem gerar um segredo do cliente. Em seguida, use esse aplicativo para inscrever um novo usuário ou confirmar o registro.
fonte
"When creating the App, the generate client secret box must be unchecked because the JavaScript SDK doesn't support apps that have a client secret."
De acordo com o Documentos: http://docs.aws.amazon.com/cognito/latest/developerguide/setting-up-the-javascript-sdk.html
O Javascript SDK não suporta aplicativos com um segredo do cliente.
As instruções agora indicam que você precisa desmarcar a opção "Gerar segredo do cliente" ao criar o aplicativo para o pool de usuários.
fonte
Isso pode demorar alguns anos, mas desmarque a opção "Gerar segredo do cliente" e funcionará para seus clientes da Web.
fonte
Como todos os outros postaram seu idioma, aqui está o nó (e ele funciona no navegador
browserify-crypto
, usado automaticamente se você usar o webpack ou o browserify):fonte
Eu tive o mesmo problema no SDK .net.
Aqui está como eu resolvi, caso mais alguém precise:
A inscrição fica assim:
fonte
Para quem estiver interessado em usar o AWS Lambda para inscrever um usuário usando o AWS JS SDK, siga estas etapas:
Crie outra função lambda em python para gerar a chave:
Chame a função por meio da função nodeJS na AWS. A assinatura agiu como o hash secreto do Cognito
Nota: A resposta é baseada fortemente na resposta de George Campbell no seguinte link: Calculando um hash SHA com uma string + chave secreta em python
fonte
Solução para
golang
. Parece que isso deve ser adicionado ao SDK.fonte
Solução para NodeJS com SecretHash
Parece bobagem que a AWS tenha removido a chave secreta do SDK, pois ela não será exposta no NodeJS.
Eu consegui trabalhar no NodeJS interceptando a busca e adicionando a chave de hash usando a resposta de @Simon Buchan .
cognito.js
fetch-inceptor.js (bifurcado e editado para NodeJS a partir do Fork de https://github.com/werk85/fetch-intercept/blob/develop/src/index.js )
fonte
Em Java, você pode usar este código:
fonte
A Amazon menciona como Computing SecretHash Values for Amazon Cognito em sua documentação com código de aplicativo Java. Aqui, esse código funciona com o boto 3 Python SDK .
Você pode encontrar o seu
App clients
no menu do lado esquerdo emGeneral settings
. Pegue essesApp client id
eApp client secret
crieSECRET_HASH
. Para sua melhor compreensão, comentei todas as saídas de cada linha.Na documentação do boto 3 , podemos ver muito tempo perguntando
SECRET_HASH
. Portanto, as linhas de código acima o ajudam a criar issoSECRET_HASH
.Se você não quiser usar,
SECRET_HASH
desmarque a opçãoGenerate client secret
ao criar um aplicativo.fonte
app_client_id
eusername
. Mas eu mostro a saída correta como um comentário que é exibido de acordo com ousername
+app_client_id
. Mais uma vez, muito obrigado.este é um código php de exemplo que eu uso para gerar o hash secreto
neste caso, o resultado é:
fonte
para JAVA e .NET que você precisa para passar o segredo tem nos parâmetros de autenticação com o nome
SECRET_HASH
.E deve funcionar.
fonte
C ++ com o Qt Framework
fonte
Pode haver uma versão mais compacta, mas isso funciona para o Ruby, especificamente no Ruby on Rails sem precisar exigir nada:
fonte
Autenticação do Cognito
Erro: o cliente do aplicativo não está configurado para segredo, mas o hash secreto foi recebido
Fornecer secretKey como nil funcionou para mim. As credenciais fornecidas incluem: -
AWSCognitoUserPoolsSignInProviderKey (AccessKeyId)
Todas as coisas acima funcionam com o exemplo de código vinculado abaixo.
Código de exemplo da AWS: https://github.com/awslabs/aws-sdk-ios-samples/tree/master/CognitoYourUserPools-Sample/Swift
Deixe-me saber se isso não funcionar para você.
fonte
Aqui está o meu comando 1, e funciona (Confirmado :))
fonte