【问题标题】:Access application id of a system managed identity in Azure in C#在 C# 中访问 Azure 中系统托管标识的应用程序 ID
【发布时间】:2021-03-20 09:39:15
【问题描述】:

目前,我们正在开发一个 Azure 应用服务应用程序,该应用程序具有在应用服务设置期间分配的系统托管标识。我们使用带有 RBAC 的托管标识来访问其他 Azure 资源,并且工作正常。

现在我想从底层托管身份获取一些信息来执行一些检查。特别是我想读取分配给此托管标识的应用程序 ID。我想在 C# 中做到这一点。我如何访问这些信息?

任何帮助表示赞赏。提前致谢。

问候, 统计

【问题讨论】:

  • 您是否使用 ARM 进行部署?
  • 您想从应用程序本身读取它吗?
  • 是的,我想在应用程序中阅读它。主要原因是我想从正在运行的应用服务器中读取应用程序 ID,通过公钥对其进行加密并将其发送到不在同一个 AD 内运行的全局验证服务。

标签: c# azure azure-managed-identity azure-service-principal


【解决方案1】:
    var credential = new DefaultAzureCredential();
    string[] scopes = new string[] { "https://graph.microsoft.com/.default" };
    var token = await credential.GetTokenAsync(new Azure.Core.TokenRequestContext(scopes));

    var handler = new JwtSecurityTokenHandler();
    var jsonToken = handler.ReadToken(token.Token) as JwtSecurityToken;
    var appid = jsonToken.Claims.First(c => c.Type == "appid").Value;
    Console.WriteLine(appid);

【讨论】:

  • 鲍曼朱的回答解决了我的要求。非常感谢。
  • @Stati 你能accept my answer 结束这个问题吗?:)
猜你喜欢
  • 2023-02-22
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 2020-12-28
  • 2022-10-24
  • 1970-01-01
相关资源
最近更新 更多