-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Profile] az login
: Add --client-id
, --object-id
and --resource-id
for user-assigned managed identity authentication
#30525
Conversation
️✔️AzureCLI-FullTest
|
|
rule | cmd_name | rule_message | suggest_message |
---|---|---|---|
login | cmd login added parameter client_id |
||
login | cmd login added parameter object_id |
||
login | cmd login added parameter resource_id |
az login refinement |
|
5f46c22
to
bf91b78
Compare
elif client_id: | ||
identity_type = MsiAccountTypes.user_assigned_client_id | ||
identity_id = client_id | ||
msi_creds = MSIAuthenticationWrapper(resource=resource, client_id=client_id) | ||
elif object_id: | ||
identity_type = MsiAccountTypes.user_assigned_object_id | ||
identity_id = object_id | ||
msi_creds = MSIAuthenticationWrapper(resource=resource, object_id=object_id) | ||
elif resource_id: | ||
identity_type = MsiAccountTypes.user_assigned_resource_id | ||
identity_id = resource_id | ||
msi_creds = MSIAuthenticationWrapper(resource=resource, msi_res_id=resource_id) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ID names are aligned with MSAL: https://learn.microsoft.com/en-us/entra/msal/python/advanced/managed-identity#user-assigned-managed-identities
- Client ID (
client_id
) - Resource ID (
resource_id
) - inconsistent withmsrestazure
'smsi_res_id
- Object ID (
object_id
)
bf91b78
to
3f904d3
Compare
return profile.login_with_managed_identity(username, allow_no_subscriptions) | ||
return profile.login_with_managed_identity( | ||
identity_id=username, client_id=client_id, object_id=object_id, resource_id=resource_id, | ||
allow_no_subscriptions=allow_no_subscriptions) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need to add a param validation that only one of the four (identity_id
, client_id
, object_id
and resource_id
) has been provided? Or we can add param help msg telling that these four are mutually exclusive
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good suggestion. Added the validation logic into profile.login_with_managed_identity()
.
3f904d3
to
2938407
Compare
az login
: Add --client-id
, --object-id
and --resource-id
for authenticating with user-assigned managed identityaz login
: Add --client-id
, --object-id
and --resource-id
for user-assigned managed identity authentication
Related command
az login --identity
Description
Close #29480
az login
currently reuses--username
for 3 types of IDs. This has several disadvantages:With the recent initiative of moving to password-free authentication methods, managed identity authentication is becoming more important.
Testing Guide
History Notes
[Profile]
az login
: Passing the managed identity ID with--username
is deprecated and will be removed in a future release. Please use--client-id
,--object-id
or--resource-id
instead