You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改AWS临时凭证过期时间?无身份提供商令牌能否刷新?

问题解答

问题1:如何修改获取到的AWS临时凭证的过期时间?

你遇到的问题是因为修改IAM角色最大会话时长后,现有凭证不会自动更新,且Amplify默认调用federateToIdentityPool时没有指定自定义会话时长。要调整临时凭证过期时间,需按以下操作:

  • 确认IAM角色的最大会话时长设置生效
    登录AWS控制台,进入IAM角色页面,找到身份池关联的Authenticated角色,检查其最大会话时长(Maximum session duration)是否已设置为你需要的值(范围15分钟到12小时)。修改后需要等待几分钟让配置生效,新的联邦请求才会应用这个上限。

  • 在Amplify调用中指定会话时长
    默认情况下,federateToIdentityPool会使用Cognito的默认会话时长(通常1小时),你需要通过重载方法传入自定义的会话时长参数,且该值不能超过IAM角色设置的最大会话时长。修改代码如下:

    func federateToIdentityPools(token : String) async throws -> Bool{
        
        guard let authCognitoPlugin = try Amplify.Auth.getPlugin(
            for: "awsCognitoAuthPlugin") as? AWSCognitoAuthPlugin else {
            fatalError("Unable to get the Auth plugin")
        }
        do {
            // 设置会话时长,单位为秒,这里示例设为3600秒(1小时),需小于等于IAM角色的最大会话时长
            let options = FederateToIdentityPoolOptions(durationSeconds: 3600)
            let result = try await authCognitoPlugin.federateToIdentityPool(
                withProviderToken: token, 
                for: .oidc("test.criipto.id"),
                options: options
            )
            
            print("Federation successful with result: \(result.credentials.accessKeyId)")
            print("Federation successful with result: \(result.credentials.secretAccessKey)")
            print("Federation successful with result: \( result.credentials.expiration)")
            
            return true
        } catch {
            print("Failed to federate to identity pools with error: \(error)")
            return false
        }
    }
    

    注意:如果指定的durationSeconds超过IAM角色的最大会话时长,Cognito会自动使用角色的最大时长作为凭证过期时间。

问题2:能否在临时AWS凭证过期时,无需联邦身份提供商的令牌进行刷新?

不行。Cognito身份池的临时凭证刷新机制依赖于第三方身份提供商的有效令牌(ID令牌或刷新令牌):

  • 当临时凭证过期时,Cognito需要验证用户的身份仍然合法,因此必须提供有效的第三方身份令牌才能重新获取新的临时凭证。
  • 如果你的第三方提供商(Criipto)支持返回刷新令牌,你可以用刷新令牌获取新的ID令牌,再调用federateToIdentityPool刷新AWS临时凭证,这个过程无需用户重新登录,但仍然需要依赖第三方的令牌(刷新令牌)。
  • 如果没有刷新令牌,就必须重新引导用户通过Criipto认证获取新的ID令牌,才能刷新AWS临时凭证。

内容的提问来源于stack exchange,提问作者Krishan Madushanka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:16:39