我的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凭据过期时刷新该凭据?
1条答案
按热度按时间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,但我会看看那里有什么可能。