У меня есть приложение C#, которое должно выдавать себя за регистрацию приложения Azure, чтобы получить доступ к некоторым ресурсам.
Я настроил федеративные учетные данные, чтобы управляемое удостоверение могло выдавать себя за приложение. Поэтому я могу использовать приведенный ниже код на виртуальной машине, чтобы выдать себя за регистрацию приложения с использованием управляемых учетных данных:
var clientAssertionCredential = new ClientAssertionCredential(
tenantId, clientId, new ManagedIdentityClientAssertion(miClientId).GetSignedAssertion);
Однако во время разработки я хочу запускать код локально.
Хотя я могу создать секрет клиента, сохранить его в KeyVault и использовать для аутентификации в качестве приложения, я не хочу использовать этот подход из соображений безопасности.
Можно ли выдать себя за приложение, используя учетные данные учетной записи пользователя, например AzureCliCredential
или VisualStudioCredential
?
@Venkatesan Я имею в виду учетные данные Azure, представляющие учетную запись пользователя Azure (вместо ресурса Azure), например AzureCliCredential
, когда я вхожу в систему az
со своей учетной записью пользователя.
См. это Learn.microsoft.com/en-us/entra/identity-platform/… вы можете использовать идентификацию клиента потока ROPC и учетные данные пользователя для поставщика удостоверений и получать взамен токены.
Хотя я могу создать секрет клиента, сохранить его в KeyVault и использовать для аутентификации в качестве приложения, я не хочу использовать этот подход из соображений безопасности. Можно ли выдать себя за приложение, используя учетные данные учетной записи пользователя, например
AzureCliCredential
илиVisualStudioCredential
?
В зависимости от сценария вы можете использовать поток ROPC для аутентификации с помощью учетной записи пользователя и с помощью приложения для вызова API.
Примечание:
Запрос:
https://login.microsoftonline.com/TenantID/oauth2/v2.0/token
client_id: ClientID
scope: https://graph.microsoft.com/.default offline_access openid
username: [email protected]
password: UserPassword
grant_type: password
client_secret: Clientsecret
Из вышеизложенного вы получите токен и, используя токен, сможете вызвать API Microsoft Graph.
Запрос:
GET https://graph.microsoft.com/v1.0/me
Authorization:
Bearer <token>
Чтобы избежать передачи client_secret, включите общедоступные клиентские потоки, как показано ниже.
Портал:
Ссылка:
Спасибо! Насколько я понимаю, поток ROPC позволяет выдать токен доступа от имени пользователя. Однако мне нужен токен доступа, представляющий само приложение. Токен будет использоваться для вызовов между серверами. Это больше похоже на поток учетных данных клиента, упомянутый на странице Learn.microsoft.com/en-us/entra/identity-platform/…. Интересно, есть ли способ позволить пользователю выдавать себя за приложение в целях разработки без долгосрочного секрета, такого как секрет клиента или сертификат.
Если вы хотите вызвать сервер-сервер, то единственным способом является поток учетных данных клиента, но для этого потока в качестве обязательного параметра требуется секрет клиента.
Какие вы упоминаете здесь собственные полномочия? являются ли это учетными данными Azure (например, имя пользователя и пароль?)