-
Notifications
You must be signed in to change notification settings - Fork 379
Open
Description
MSAL client type
Confidential
Problem statement
MSAL
In order to enforce the managed certificate credential, the following states should be covered:
- old MSAL, old cert -> no-op, will continue to work
- new MSAL, old cert -> no-op, will continue to work
- old MSAL, new cert -> the STS stops them (based on MSAL version + certificate subject name and issuer)
- new MSAL, new cert, bad API -> MSAL stops this based
- new MSAL, new cert, good API -> will work
Note: the "bad" API is the existing .WithCertificate(x509cert) API, and the new API .WithManagedCertificate() lives in 1p repository
In order to support states 4 and 5, the SDK will perform 2 checks:
- it will check that the certificate is managed (based on subject name or issuer, details tbd)
- it will check if the good API is used. To distinguish between "good" and "bad" API, the MSAL extension will send a flag to MSAL. This flag will not be sent to the STS. 1p extension can use the
WithExtraQueryParametersexisting API with a special key-value pair or a new APIWithFeatureFlagcan be created if needed.
Identity.Web
- old Id.Web, old cert -> ok
- new Id.Web, old cert -> ok
- old Id.Web, new cert -> the STS stops them, due to transitive use of MSAL
- new MISE, new cert, bad API -> relies on MSAL to fail
- new MISE, new cert, good API -> MISE sets the flag API e.g. WithExtraQueryParameters("good_api", "1") on MSAL
Proposed solution
No response
Alternatives
No response