微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用通过亚马逊Kendra中的saml2aws登录生成的凭据?

如何解决如何使用通过亚马逊Kendra中的saml2aws登录生成的凭据?

我正在尝试使用亚马逊Kendra测试我的搜索应用程序。我利用了文档-> https://docs.aws.amazon.com/kendra/latest/dg/deploying.html随附的代码。 我正在使用saml2aws从我的计算机登录到AWS,这会生成以下密钥

aws_access_key_id = ***
aws_secret_access_key = ****
aws_session_token = ***
aws_security_token= ***
x_principal_arn=**
x_security_token_expires= **
region= ***

就像在aws提供的搜索应用程序代码中一样,它使用aws-sdk,而对于身份验证则使用以下代码,该代码仅使用三个值。当我在配置文件中插入由saml2aws生成的值时,它抱怨“请求中包含的安全令牌无效”。当我尝试添加上面生成的会话令牌时,它也不起作用。在这种情况下如何传递通过saml2aws登录生成的凭据。

export const Kendra = !hasErrors
? new Kendra({
   accessKeyId: config.accessKeyId,secretAccessKey : ...
   region : ..
})
: undefined

解决方法

在初始化Kendra客户端时,请同时包含会话令牌。您引用的代码示例仅演示了初始化Kendra客户端的不同方法之一。 AWS JS SDK允许您在初始化Kendra客户端时传递更多参数(读取this)作为选项(sessionToken是其中之一)。 如果即使在通过sessionToken之后,您的凭据仍然无法使用,则很可能是您使用过期的会话令牌(session tokens are valid for a max time of 12 hours)的情况。我可以推荐三种解决此问题的方法:

  1. 使用长期凭证来初始化Kendra客户端
  2. 您将自己的Web服务器放在UX和Kendra之间。后端中的此Web服务器可以使用长期存在的凭据来调用Kendra API。这样一来,您就不会泄漏UX代码中的凭据。
  3. 使用Cognito拨打Kendra服务。请refer on how Amplify可以帮助您

上面提到的所有三个选项都应该能够摆脱sessionToken过期限制。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。