在cognito用户池中,我有两个不同的组:Admin
现在我想授权userpool中的用户。我正在关注这个链接-https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html -客户端身份验证流。但是“RespondToAuthChallenge”-返回NotAuthorizedException、不正确的用户名或密码。
import * as AWS from 'aws-sdk'
import { SRPClient, calculateSignature, getNowString } from 'amazon-user-pool-srp-client'
const userPoolId = 'XXX'
const ClientId = 'XXX'
const verifyUser = () => {
AWS.config.region = 'us-west-2'
const srp = new SRPClient(userPoolId)
const SRP_A = srp.calculateA()
var params = {
AuthFlow: 'USER_SRP_AUTH',
ClientId,
AuthParameters: {
USERNAME: formState.email,
SRP_A,
},
}
let cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider()
cognitoidentityserviceprovider.initiateAuth(params, function (err, data) {
if (err) {
const error = err.message ? err.message : err
console.log(error)
}
else {
console.log(data) // --> data.session is undefined
if (data.ChallengeParameters && data.ChallengeName) {
const passwordAuthenticationKey =
srp.getPasswordAuthenticationKey(
data.ChallengeParameters.USER_ID_FOR_SRP,
formState.password,
data.ChallengeParameters.SRP_B,
data.ChallengeParameters.SALT
)
const dateNow = getNowString()
const signatureString = calculateSignature(
passwordAuthenticationKey,
userPoolId,
data.ChallengeParameters.USER_ID_FOR_SRP,
data.ChallengeParameters.SECRET_BLOCK, dateNow
)
var params = {
ChallengeName: data.ChallengeName,
ClientId,
ChallengeResponses: {
// PASSWORD_VERIFIER
PASSWORD_CLAIM_SIGNATURE: signatureString,
PASSWORD_CLAIM_SECRET_BLOCK: data.ChallengeParameters.SECRET_BLOCK,
TIMESTAMP: dateNow,
USERNAME: data.ChallengeParameters.USER_ID_FOR_SRP,
},
Session: data.Session, // undefined
};
cognitoidentityserviceprovider.respondToAuthChallenge(params, function (err, data) {
if (err) {
const error = err.message ? err.message : err
console.log(error) // Incorrect username or password
}
else {
console.log(data)
}
})
}
}
})
}
我创建了不同的用户,但没有运气。用户注册,但响应ToAuthChallenge抛出错误。发起认证响应返回挑战名称和挑战参数,但不提供会话。
我发现了一条我无法理解的语句——“当下一个RespondToAuthChallenge密码验证操作运行时,Amazon Cognito返回一个通用的NotAuthorizedException错误,指示用户名或密码不正确。”在里面https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-managing-errors.html
如果您有任何解决方案/想法,请告诉我,谢谢!!
首先,根据RespondToAuthChallenge文档,Session字段不是必填字段,因此如果没有提供,您甚至不需要将其传递给PASSWORD\u VERIFIER质询。
第二,您能否包含完整的错误消息以及从initiateAuth和respondToAuthChallenge操作中得到的响应,以便我可以查看一下?
还请记住,initiateAuth操作的响应中的会话字段是带大写字母“S”的“session”(这里是initiateAuth操作的文档),因此您必须使用data.session来获取会话值,而不是data.session。
现在我想在UserPool中授权用户。我关注这个链接--https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html-client-side Authentication flow。但是“respondtoAuthChallenge”-返回No
我有一个PHP网页,其中我配置了aws sdk并实例化了cognito客户机。客户机也配置了一个客户机密码,并且启用了auth flows USER\u PASSWORD\u auth、USER\u SRP\u auth。具有基本身份验证流类型USER\u PASSWORD\u auth的initiateAuth对我来说很好。下面是我尝试过的示例用法- 通过这种方式,我们获得了一个带有access
我想知道我是否以正确的方式编写了泽西客户端代码。 登录页面应该在输入正确的用户名和密码后重定向到主页,服务器端返回一个空字符串()。如果其中一个不正确,服务器端代码返回。 页面功能运行良好,但当我使用正确的用户名和密码对使用客户端代码进行测试时,它返回,响应返回200OK。下面是我的客户端代码。 我怀疑用户名和密码没有按HTML文件要求的正确输入位置提交。下面是我的HTML文件块。
我正在尝试获取关于用户使用哪个浏览器调用API的信息。我在网上搜索,似乎应该使用来自请求头的“用户-代理”。 这里会有什么问题?为什么头球会出错? 提前谢谢!
问题内容: 这里发布了一个类似的问题:REST API服务针对验证失败返回什么合适的HTTP状态代码? 上面线程中的答案指出:“例如,如果URI应该具有ISO-8601日期,而您发现它的格式错误或引用的日期是2月31日,则您将返回HTTP 400。实体主体中格式正确的XML,并且无法解析。” 但是,如果用户提交了正确格式的数据会怎样?我的意思是,用户为用户名和密码提交了纯字母字符串/文本(这对我的
这里发布了一个类似的问题:对于验证失败,REST API服务返回的适当HTTP状态代码是什么? 但是,如果用户提交了正确格式的数据,会发生什么呢?我的意思是,用户为用户名和密码提交了一个按字母顺序排列的字符串/文本(这对我的应用程序完全有效)。唯一的问题是密码与用户名不匹配。在这种情况下,400将是不正确的,因为它是完全有效的语法和格式良好的。 401将是不正确的(正如这里所建议的:哪个HTTP状