Description
Is your feature request related to a problem? Please describe.
When a mgmt-plane request gets blocked by MFA policy, only the claims challenge from WWW-Authenticate
header is passed to get_token_info
via options['claims']
.
The response body of the 401
response is discarded as Body is streamable
:
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/9fb3fda4-e572-422a-a972-1011d3593176/resourceGroups/testpolicy1/providers/Microsoft.KeyVault/vaults/kv06171?api-version=2023-02-01'
cli.azure.cli.core.sdk.policies: Request method: 'PUT'
...
cli.azure.cli.core.sdk.policies: Response status: 401
cli.azure.cli.core.sdk.policies: Response headers:
...
cli.azure.cli.core.sdk.policies: 'WWW-Authenticate': 'Bearer realm="", authorization_uri="https://login.microsoftonline.com/common/oauth2/authorize", error="insufficient_claims", claims="eyJhY2Nlc3NfdG9rZW4iOnsiYWNycyI6eyJlc3NlbnRpYWwiOnRydWUsInZhbHVlcyI6WyJwMSJdfX19"'
...
cli.azure.cli.core.sdk.policies: Response content:
cli.azure.cli.core.sdk.policies: Body is streamable
However, the response body contains detailed information on the policy that rejected the request. The response body should be displayed to the user.
Describe the solution you'd like
SDK should have a way to pass the 401
response body to the credential that implements get_token_info
so that it can display the response body accordingly.
For example, get_token_info
's options
can have a new field called body
that contains the 401
response body.
Describe alternatives you've considered
N/A
Additional context
- {Auth} Add
--claims-challenge
to the re-authentication message azure-cli#31699 (comment) - [Core] Investigate default
on_challenge
implementation in auth policies #31215 - Azure CLI supported the new
get_token_info
token protocol in {Auth} Supportget_token_info
protocol azure-cli#30928