public UserAccess GetUserAccess(CloudIdentity identity, bool forceCacheRefresh = false) { if (identity == null) { identity = _defaultIdentity; } var rackspaceCloudIdentity = identity as RackspaceCloudIdentity; if (rackspaceCloudIdentity == null) { rackspaceCloudIdentity = new RackspaceCloudIdentity(identity); } var userAccess = _userAccessCache.Get(string.Format("{0}/{1}", rackspaceCloudIdentity.CloudInstance, rackspaceCloudIdentity.Username), () => { var auth = AuthRequest.FromCloudIdentity(identity); var response = ExecuteRESTRequest <AuthenticationResponse>(identity, "/v2.0/tokens", HttpMethod.POST, auth, isTokenRequest: true); if (response == null || response.Data == null || response.Data.UserAccess == null || response.Data.UserAccess.Token == null) { return(null); } return(response.Data.UserAccess); }, forceCacheRefresh); return(userAccess); }