What MSAL implements today:
- WithProofOfPossession API
- this is available on .NET desktop for public client only
- there exists an internal interface
IPoPCryptoProvider for key management
- key management is done by storing key on disk in a container (similar to DPAPI protection)
Tasks to complete:
First deliverable
- Refactor WithProofOfPossession public API to be more like MSAL Android's implementation (api and example) and take into consideration the fact that Method and Url are optional.
Second deliverable
- [Needs discussion] Refactor
IPoPCryptoProvider interface to provide a higher level abstraction. The current CannonicalPublicKeyJwk is pretty low level. Or maybe it's ok as Wilson can plugin here.
- Make IPoPCryptoProvider class public and expose a new overload of
WithProofOfPossession that takes in a IPoPCryptoProvider so that customers can define their own key management.