SQL Server, Alter Login fails, must specify the old_password and "Execute As Login = 'user'.
Absolutely confusing for users and seems dumb, maybe I need to read more to understand why.
Good write up here:
execute as login = 'my_login'
ALTER LOGIN my_login WITH PASSWORD = 'new password' OLD_PASSWORD = 'old password';