WebService async WebMethod
I can't speak for the language you a using specifically, but I have always been lead to believe that declaring variables within if and try statements is bad form. Can't say I've ever seen one in a catch statement, but I believe the same principle might apply.

You seem to be wrapping a lot in that try block. Do you expect that

var mappedToken = tokenTask.Result;

could actually throw an exception? If not, I would personally recommend removing it from that code block.

To be clear, how much code to put in a try block would be a matter of opinion, but are you obeying the single responsibility principle? I would posit that the code would be simplified if the reader knew what is expected to throw an exception at a glance. Your try block is responsible for 6 different tasks by my count. Should the reader assume that all of those tasks are capable of faulting, and that the resulting exception should be the same regardless of which part failed and which part was successful? If UpdateSSOToken were to execute but Task.WhenAll failed are we in the same boat we would be in if UpdateSSOToken had failed? Something to consider.

As for is it a good idea to have the exception at all-


  The method you choose depends on how often you expect the event to
  occur.


To help you determine that you should consider the following about the WhenAll method of Tasks- 


  If any of the supplied tasks completes in a faulted state, the
  returned task will also complete in a Faulted state


This answer cites some useful information on exception with tasks, including 


  An Async Primer by Bill Wagner


which goes into detail about the await pattern. I would suggest at least reading the primer if none of the other links, I believe it directly addresses your question.