Adding my solution as when searching for my issue I was brought here.
My problem was that even though everything seemed to work (able to login, MSAL got the token, MSAL added it to the Headers for a protected resource api call etc.).
However, when the api call was made the api responded with 401 Unauthorized. Usure why I decoded the token and it warned me of invalid signature.
In the end the issue was that on my protected resource, I had "user.read", as well as my scope for the api -> api://clientId/scope
So for some reason the additional user.read scope broke something in the API. Not sure why as the API has the user.read API permission. Regardless, it might be something to double check