【问题标题】:Authenticate service caller with its Managed Identity in another service在另一个服务中使用其托管标识对服务调用者进行身份验证
【发布时间】:2020-08-21 13:08:00
【问题描述】:

在另一个应用服务/.NET Core WebAPI (也有自己的托管身份)?我想使用 Azure API 管理来隐藏调用的服务和尽可能少的密钥。

编辑:

API 应用服务 Azure 授权/Active Directory 设置: API 应用注册详情:

应用注册/API应用/认证:

  • 隐式授权 - 仅检查 ID 令牌

  • 支持的帐户类型 - 单租户

应用注册/API 应用/公开 API:

当我尝试添加客户端应用程序时,我得到了这个(d1d 是我的客户端应用服务托管 ID 的结尾):

【问题讨论】:

    标签: c# asp.net-web-api azure-active-directory microservices azure-api-management


    【解决方案1】:

    您的 API 不需要托管标识,任何 app registration 都可以。设置它的application id uri 并使用Azure.Identity nuget package 来获取类似这样的令牌:

    var managedIdentityCredential = new ManagedIdentityCredential();
    var scopes = new []{"{your api application id uri}/.default"}; // E.G: api://3a768fed-640b-420c-8b33-39c701c55199/.default
    var accessToken = (await managedIdentityCredential.GetTokenAsync(new Azure.Core.TokenRequestContext(scopes))).Token;
    

    【讨论】:

    • 好的,文档有点误导。我到了可以在我的客户端应用服务中获取令牌的地步,API 应用服务需要身份验证,并且在使用不记名身份验证时我得到了 401 You do not have permission to view this directory or page.。我找不到设置权限以访问我的 API 的地方。你能帮帮我吗?
    • @Wojteq 请分享您的 API 身份验证设置代码/配置。
    • @Wojteq 应用程序权限不能被预授权。它仅适用于委派权限。关于错误是由于应用程序是一种特殊类型的应用程序,而不是普通应用程序。
    • “应用程序权限不能预授权”是什么意思?你的意思是不可能做我想做的事吗?当我在 Azure Key Vault 中授权我的应用服务时,它是如何工作的?你能告诉我如何实现我的目标吗?
    • @Wojteq pre-authorization works with scopes (delegated permissions) 但没有应用程序权限(应用程序角色)。密钥保管库配置保持不变。
    猜你喜欢
    • 1970-01-01
    • 2019-01-24
    • 2019-10-26
    • 2020-01-24
    • 2020-06-08
    • 2020-08-10
    • 2013-10-24
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多