Thanks to @browsermator indications I managed to make the navigator handle the download.
The main problem was authentication, which I bypassed with a token to allow the user on next download.
For the POST, I generate a form like this:
<form ngNoForm action="{{baseUrl + 'WorkingList/DownloadWorkingList/' +createFileTree + '/'+ createMetadata + '/' + token}}" method="post">
<input *ngFor="let imageId of workingList.imageIds; let index = index" type="hidden" name="imageIds[]" [(ngModel)]="workingList.imageIds[index]"/>
<button type="submit" class="btn btn-primary" rippleEffect>
{{ "DOWNLOAD_MODAL.CONFIRM" | translate }}
</button>
</form>
For the GET (not part of the question), I generate a URL the same way as the Form submit url, just adding the workingList Id as parameter.
Server side I added a check on the token added in the query url, and added [FromForm]
on the object parameter.
This allow the navigator to handle the response as a file download and let him handle resources.
This is probably not the best (authentication is by passed, and user auth has to be handled manually) but it solved my problem and we can deal with this authorization method.
PS: I did not use the File() method in the controller because it close the stream too soon for the archive to be build