用户在没有客户端密钥的情况下冒充 Azure 应用程序注册

问题描述 投票:0回答:1

我有一个 C# 应用程序,需要模拟为 Azure 应用程序注册才能访问某些资源。
我已设置联合凭据以允许托管身份冒充应用程序。因此,我可以在虚拟机上使用如下代码,使用托管身份凭证来模拟应用程序注册:

var clientAssertionCredential = new ClientAssertionCredential(
            tenantId, clientId, new ManagedIdentityClientAssertion(miClientId).GetSignedAssertion);

但是,在开发过程中,我想在本地运行代码。
虽然我可以创建客户端密钥,将其存储在 KeyVault 中,并使用它作为应用程序进行身份验证,但出于安全考虑,我不想使用此方法。
是否可以使用用户帐户的凭据(例如

AzureCliCredential
VisualStudioCredential
)冒充应用程序?

c# azure credentials
1个回答
0
投票

虽然我可以创建客户端密钥,将其存储在 KeyVault 中,并使用它作为应用程序进行身份验证,但出于安全考虑,我不想使用此方法。是否可以使用用户帐户的凭据(例如

AzureCliCredential
VisualStudioCredential
)冒充应用程序?

根据场景,您可以使用 ROPC 流程对用户帐户进行身份验证,并使用应用程序调用 API。

注:

  • 对于此类场景和安全性,Microsoft 不建议使用此 ROPC 流程。
  • 此方法不支持启用了 MFA 的帐户和个人 Microsoft 帐户。
  • 您必须使用其他交互流程,例如授权代码流程,它将用户定向到浏览器进行登录。

要求:

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

从上面,您将获得令牌,并且使用令牌,您可以调用Microsoft Graph API。

要求:

GET https://graph.microsoft.com/v1.0/me

Authorization: 
Bearer <token>

为了避免传递 client_secret,请启用公共客户端流,如下所示。

传送门:

enter image description here

参考:

Microsoft 身份平台和 OAuth 2.0 资源所有者密码凭据 - Microsoft 身份平台 |微软学习

© www.soinside.com 2019 - 2024. All rights reserved.