Refactor Teams SSO middleware #6884
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related issue #6861
#minor
Description
This PR refactors the Teams SSO middleware to fix an issue with the usage of BlobsStorage.
When using BlobsStorage in the middleware, by providing an ETag to an item that will be saved for the first time, it throws an HTTP 412 error, then being captured as an ETag Exception and the conversation gets stuck.
The main reason of why this middleware was saving stuff in the storage was to avoid duplicated requests (when having more than one MS Teams client sign-in), process the first and discard the rest.
We ended up refactoring the middleware to use the storage ETag instead of custom one, and track the deduplication process per user per conversation instead of the token exchange request id that comes in the Activity.Value.
Specific Changes
<channelId>/<conversation id>/<user id>
to avoid colliding with the same user in other conversations.Testing
The following image shows an example of the new implementation.
