大佬教程收集整理的这篇文章主要介绍了对 Azure AD 注册应用进行身份验证的最佳做法是什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个基于 GCP 的应用程序(特别是它在 Google Cloud Composer(Airflow 的托管版本)上运行)。我想从那里连接到另一个组织的 Microsoft Graph API。因此,我希望应用程序在后台运行,每 x 分钟从外部组织的收件箱中检索新电子邮件,然后进行一些处理,并基于此通过 Graph API 在所述邮箱中执行一些操作。
我正在尝试找出有关如何保护此连接的最佳做法。我相信我可以使用已注册应用程序的客户端机密,然后将其存储在 Azure keyvault 中。现在我不确定我应该如何验证我注册的应用程序,以便它可以检索此客户端机密,而该机密又可用于访问 Graph API?
正如您可能会说的,我不太确定这是否有意义,或者有什么更好的方法?我发现的几乎所有信息都与托管标识有关,但是如果我理解正确,这些信息只能在应用程序在 Azure 上本地运行时使用,而对我而言并非如此。
非常感谢您的帮助!
如果我没有误解,您可以参考我的示例代码,请注意您需要先添加 Key Vault 访问策略。您可以参考 this doc 了解默认的 azure 凭据。
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Identity.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace test0430callingapi.Controllers
{
public class HelloController : Controller
{
public async Task<String> IndexAsync()
{
const String secretName = "clientsecret";
var kvUri = "https://key_vault_name.vault.azure.net/";
var a = new DefaultAzureCredential();
var client = new SecretClient(new Uri(kvUri),a);
var secret = await client.GetSecretAsync(secretName);
String secretVaule = secret.Value.Value;
//azure ad client credential flow to generate access token
IConfidentialClientApplication app;
app = ConfidentialClientApplicationBuilder.Create("azure_ad_app_clientid")
.WithClientSecret(secretVaulE)
.WithAuthority(new Uri("https://login.microsoftonline.com/your_tanent_name.onmicrosoft.com"))
.build();
AuthenticationResult result = null;
String[] scopes = new String[] { "https://graph.microsoft.com/.default" };
result = await app.AcquireTokenForClient(scopes)
.ExecuteAsync();
String accesstoken = result.AccessToken;
// this token can be used to call https://graph.microsoft.com/v1.0/users/user_id/mailFolders/{iD}/messages
return accesstoken;
}
}
}
我在这里使用了客户端凭据流,它不需要让用户登录,并且 this api 支持应用程序权限。如果您使用仅支持委派权限的 api,则无法使用。这是 api 调用响应。
以上是大佬教程为你收集整理的对 Azure AD 注册应用进行身份验证的最佳做法是什么?全部内容,希望文章能够帮你解决对 Azure AD 注册应用进行身份验证的最佳做法是什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。