package com.alipay.easysdk.kms.aliyun.credentials; public class BasicSessionCredentials implements ICredentials { protected final Long roleSessionDurationSeconds; private final String accessKeyId; private final String accessKeySecret; private final String securityToken; private Long sessionStartedTimeInMilliSeconds = 0L; public BasicSessionCredentials(String accessKeyId, String accessKeySecret, String securityToken) { this(accessKeyId, accessKeySecret, securityToken, 0L); } public BasicSessionCredentials(String accessKeyId, String accessKeySecret, String securityToken, Long roleSessionDurationSeconds) { if (accessKeyId == null) { throw new IllegalArgumentException("Access key ID cannot be null."); } if (accessKeySecret == null) { throw new IllegalArgumentException("Access key secret cannot be null."); } this.accessKeyId = accessKeyId; this.accessKeySecret = accessKeySecret; this.securityToken = securityToken; this.roleSessionDurationSeconds = roleSessionDurationSeconds; this.sessionStartedTimeInMilliSeconds = System.currentTimeMillis(); } @Override public String getAccessKeyId() { return accessKeyId; } @Override public String getAccessKeySecret() { return accessKeySecret; } @Override public String getSecurityToken() { return securityToken; } public boolean willSoonExpire() { if (roleSessionDurationSeconds == 0) { return false; } long now = System.currentTimeMillis(); double expireFact = 0.95; return roleSessionDurationSeconds * expireFact < (now - sessionStartedTimeInMilliSeconds) / 1000.0; } }