我的设置包括一个带IAM访问控制的AWS API网关和一个用于登录的AWS Cognito。我已经从Android应用程序访问了该API,现在想构建一个Web应用程序(angular2)来执行相同的操作。在Android上,我正在使用AWSCognitoCredentialsProvider为API SDK提供所需的凭据。(http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-generate-sdk.html)
不幸的是,我无法弄清楚如何/是否可以使用javascript SDK?
使用cognito登录并获取会话ID,访问令牌等没有问题。但是,API SDK要求我提供accessKey和secretKey。
以下是生成的API SDK的相关代码段:
var authType = 'NONE';
if (sigV4ClientConfig.accessKey !== undefined && sigV4ClientConfig.accessKey !== '' && sigV4ClientConfig.secretKey !== undefined && sigV4ClientConfig.secretKey !== '') {
authType = 'AWS_IAM';
}
换句话说,我有这部分的工作(来自一些示例代码):
static authenticate(username:string, password:string, callback:CognitoCallback) {
AWSCognito.config.update({accessKeyId: 'anything', secretAccessKey: 'anything'})
let authenticationData = {
Username: username,
Password: password,
};
let authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
let userData = {
Username: username,
Pool: CognitoUtil.getUserPool()
};
console.log("Authenticating the user");
let cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
console.log(AWS.config);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
callback.cognitoCallback(null, result);
},
onFailure: function (err) {
callback.cognitoCallback(err.message, null);
},
});
}
现在我想使用这个:
this.apigClient = apigClientFactory.newClient({
accessKey: "anything",
secretAccessKey: "anything",
sessionToken: "nothing",
region: 'eu-central-1'
如何从我的AWSCognito中获取accessKey,secretAccessKey和sessionToken?到目前为止,我找不到任何API 。
Cognito实际上由3种不同的服务组成:
API网关客户端期望的是来自Cognito联合身份的凭据。
请参阅Cognito文档,以将您的用户群与Cognito联合身份集成。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句