程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了对 Azure AD 注册应用进行身份验证的最佳做法是什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决对 Azure AD 注册应用进行身份验证的最佳做法是什么??

开发过程中遇到对 Azure AD 注册应用进行身份验证的最佳做法是什么?的问题如何解决?下面主要结合日常开发的经验,给出你关于对 Azure AD 注册应用进行身份验证的最佳做法是什么?的解决方法建议,希望对你解决对 Azure AD 注册应用进行身份验证的最佳做法是什么?有所启发或帮助;

我正在开发一个基于 GCP 的应用程序(特别是它在 Google Cloud Composer(Airflow 的托管版本)上运行)。我想从那里连接到另一个组织的 Microsoft Graph API。因此,我希望应用程序在后台运行,每 x 分钟从外部组织的收件箱中检索新电子邮件,然后进行一些处理,并基于此通过 Graph API 在所述邮箱中执行一些操作。

我正在尝试找出有关如何保护此连接的最佳做法。我相信我可以使用已注册应用程序的客户端机密,然后将其存储在 Azure keyvault 中。现在我不确定我应该如何验证我注册的应用程序,以便它可以检索此客户端机密,而该机密又可用于访问 Graph API?

正如您可能会说的,我不太确定这是否有意义,或者有什么更好的方法?我发现的几乎所有信息都与托管标识有关,但是如果我理解正确,这些信息只能在应用程序在 Azure 上本地运行时使用,而对我而言并非如此。

非常感谢您的帮助!

解决方法

@H_675_12@

如果我没有误解,您可以参我的示例代码,请注意您需要先添加 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 注册应用进行身份验证的最佳做法是什么?全部内容,希望文章能够帮你解决对 Azure AD 注册应用进行身份验证的最佳做法是什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: