如何获取REFRESH_TOKEN_AUTH请求以返回RefreshToken

时间:2019-03-08 19:33:16

标签: c#-4.0 amazon-cognito

我正在使用Amazon Cognito登录用户并保存import java.sql.PreparedStatement; import java.sql.SQLException; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.ObjectTypeHandler; import com.google.common.base.Joiner; public class ListTypeHandler extends ObjectTypeHandler { @Override public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException { ps.setObject(i, Joiner.on(",").join((Iterable<?>) parameter), JdbcType.OTHER.TYPE_CODE); } } ,以便他们在初始设置后不必输入密码。我需要能够使用RefreshToken登录并获得一个新的RefreshToken来保存,以备下次使用。但是,当我呼叫RefreshToken时,它不会返回InitiateAuthAsync

C#:

RefreshToken

响应:

var refreshReq = new InitiateAuthRequest();
refreshReq.ClientId = _clientId;

refreshReq.AuthFlow = AuthFlowType.REFRESH_TOKEN_AUTH;
refreshReq.AuthParameters.Add("SECRET_HASH", 
    SecretHash(_clientId, _clientSecret, username));
refreshReq.AuthParameters.Add("REFRESH_TOKEN", refreshToken);


var clientResp = cognitoProvider.InitiateAuthAsync(refreshReq).Result;

这是具有有效ResponseToken的登录响应:

{
    "AuthenticationResult": {
        "AccessToken": "<accessToken>",
        "ExpiresIn": 3600,
        "IdToken": "<idToken>",
        "TokenType": "Bearer"
    },
    "ChallengeParameters": {}
}

2 个答案:

答案 0 :(得分:1)

显然,这是AWS Cognito API中的错误。 docsInitiateAuth应该返回一个更新的RefreshToken,但不会。

答案 1 :(得分:0)

刷新令牌是一个长期存在的令牌,没有意义返回它,因为它仍然有效许多天。如果默认的30天到期时间不够长,则可以将其最多增加到3650天。