swift 更改AWS临时凭据过期时间

0qx6xfy6  于 2023-01-08  发布在  Swift
关注(0)|答案(1)|浏览(226)

我的iOS应用程序中有以下代码,它与Amazon Cognito身份池集成。我的身份池与criipto集成,criipto是第三方身份验证提供程序。token参数是我从第三方提供程序获得的身份验证令牌。

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 {
        let result = try await authCognitoPlugin.federateToIdentityPool(
            withProviderToken: token, for: .oidc("test.criipto.id"))
        
            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
    }
}

我已成功打印凭据。现在我想更改凭据的过期时间。为此,我所做的是更改身份池中已验证角色的IAM角色的最长会话持续时间

但这不会改变凭据的到期时间。

问题1-如何更改我获得的临时AWS凭据的到期时间?
问题2-在没有联合身份提供商令牌的情况下,是否有办法在临时AWS凭据过期时刷新该凭据?

pjngdqdw

pjngdqdw1#

您可以直接转到IAM中的Cognito Authenticated Role并更改最长会话时间。
以下是通过控制台执行此操作的方法:https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_max-session-duration
您还可以使用CLI(update-role)并更新max-session-duration参数来更新角色。
您也可以使用UpdateRole API,并且可以使用MaxSessionDuration参数进行设置。
关于你的第二个问题,我不认为这是可能的。也许有一些方法可以缓存东西,但我会避免走这条路。从IdP颁发的令牌必须仍然有效,因此你可能想探索多久令牌从IdP有效。我不熟悉你正在使用的IdP,但我会看看那里有什么可能。

相关问题