- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Azure AD 中进行服务到服务身份验证。当两个服务(webapps)针对 Azure AD 应用程序注册在本地运行时,我可以正常工作。但是,当 Web 应用程序在 Azure 中运行时(针对相同的 Azure AD 应用程序注册),它不起作用。
我创建了两个 Azure 应用服务 Web 应用程序(它们是 ASP.NET Core Web API 项目) - 一个充当客户端,另一个充当服务器。损坏的部分是客户端 Web 应用程序,它从 AzureAD 请求访问 token 。仅当请求具有自定义范围的 token 时,它才会中断。不过,这个相同的“自定义范围” token 请求在本地 Web 应用程序中工作得很好。
在 Azure 中,我创建了一个“应用程序注册”,并为其指定了一个名为“bob”的自定义范围...
在客户端 ASP.NET Core webapi 应用程序中,我添加了 Azure.Identity
nuget 包,并获得了这样的 token ...
var tokenRequestContext = new TokenRequestContext(new[] {scope});
token = await new DefaultAzureCredential().GetTokenAsync(tokenRequestContext, cancellationToken);
(范围变量与上面屏幕截图中的名称匹配)
在本地,这工作正常并返回一个 token 。
在 Azure 中,我遇到此异常:
Azure.Identity.AuthenticationFailedException: DefaultAzureCredential failed to retrieve a token from the included credentials.
- ClientSecretCredential authentication failed: AADSTS70011: The provided request must include a 'scope' input parameter. The provided value for the input parameter 'scope' is not valid. The scope api://<guid>/bob is not valid.
(我已从该代码段中删除了 GUID)
在本地和 Azure 中运行此程序时,我将 AZURE_CLIENT_ID
、AZURE_CLIENT_SECRET
、AZURE_TENANT_ID
环境变量设置为相同的值。我不明白为什么它在本地的工作方式与在 Azure 中的工作方式不同,因为这些环境变量是相同的。
请注意,我的目的是使用托管服务标识而不是设置这些环境变量。但目前,通过在本地和 Azure 中使用这些环境变量 - 两者都应该使用相同的“ClientSecretCredential”身份验证 - 所以我期望得到相同的结果。
最佳答案
答案有两部分:
Azure.Identity目前仅适用于使用 new Azure.* client libraries 的 native Azure 服务 SDK 。在您的情况下,您尝试将其用于具有自定义范围的自定义 Web 应用程序身份验证,该范围未得到官方支持或记录。对于常规身份验证流程(例如本例中的客户端凭据授予),您应该仍然使用 MSAL ,或者为了更轻松地与 ASP.NET Core 应用程序集成,Microsoft Identity Web .
注意:专门针对客户端凭据流,它仅允许 .default 范围。有一个开放UserVoice另一个 thread解决方法。
现在来解决为什么它在 Azure.Identity DefaultAzureCredential 中不起作用的问题(无论它是否不受官方支持)。我怀疑在您部署的 Web 应用程序中,可能缺少一个或多个上下文(IDENTITY_ENDPOINT 或 AZURE_AUTHORITY_HOST 是我在查看代码时的疯狂猜测)。但不知道,除非我们很少进行试验和错误(同样,我只想出于实验目的,而不是由于缺乏官方支持而在真正的生产应用程序中这样做)。 DefaultAzureCredential
尝试按顺序通过以下机制进行身份验证。在本地计算机中,它可能能够从链中的一种机制(如 VS 或 CLI)获取所需的上下文,而在已部署的应用程序中,这些根本不存在。
关于c# - 在 Azure 中运行时使用自定义范围时 DefaultAzureCredential().GetTokenAsync 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63782801/
我正在尝试设置 Azure webapp 服务(使用 docker)来使用用户管理的身份访问我的 keyvault。我已经设置了一个用户管理身份,将其分配给我的 web 应用程序,并为其提供了我正在测
我正在尝试设置 Azure webapp 服务(使用 docker)来使用用户管理的身份访问我的 keyvault。我已经设置了一个用户管理身份,将其分配给我的 web 应用程序,并为其提供了我正在测
我使用默认的 azure 凭据方法获取访问 token ,同时使用函数应用程序的托管标识获取访问 token 。我能够获取 token 。但现在我不确定如何对该方法进行单元测试。这是当前状态 priv
现在,我正在将我们的应用程序从使用客户端 ID + key 连接到 Azure 应用程序配置和 Azure Key Vault 转换为使用 DefaultAzureCredentials。总的来说,我
我在使用 DefaultAzureCredential 进行身份验证时遇到一些问题。 如果我运行这段代码: var credentials = new VisualStudioCredential()
使用 try/except 和 DefaultAzureCredential() 记录和处理异常的示例方法有哪些? 示例: 在 Python Azure 函数中使用 DefaultAzureCrede
使用 try/except 和 DefaultAzureCredential() 记录和处理异常的示例方法有哪些? 示例: 在 Python Azure 函数中使用 DefaultAzureCrede
我正在处理官方 Azure 示例:Getting started - Managing Compute Resources using Azure .NET SDK 。并在线 resourceGrou
我有一个通过 az login 登录到 Azure 的控制台 我可以运行以下 JavaScript,控制台会按照我的预期输出我的详细信息 const { DefaultAzureCredential
我尝试使用 DefaultAzureCredential 连接到 Azure 中托管的 key 保管库,代码如下: using System; using Microsoft.AspNetCore.H
我尝试使用 DefaultAzureCredential 连接到 Azure 中托管的 key 保管库,代码如下: using System; using Microsoft.AspNetCore.H
我在 .NET 6 上有一个以 dotnet 隔离模式运行的 C# azure 函数。此函数调用另一个 azure 函数,该函数使用 Azure AD 身份验证。为了生成 token ,我有以下代码:
我在 .NET 6 上有一个以 dotnet 隔离模式运行的 C# azure 函数。此函数调用另一个 azure 函数,该函数使用 Azure AD 身份验证。为了生成 token ,我有以下代码:
我有一个 functionApp (V3),它尝试使用 DefaultAzureCredential 访问应用程序配置。我的系统托管用户已打开并具有“应用程序配置数据读取者”角色。我在本地调试中运行它
我正在使用 azure.identity 中的 DefaultAzureCredential() 来获取凭据并使用它来建立 TableServiceClient (azure.data.table)
我们在 Azure 管理身份环境中操作,其中有一个高性能标准输入标准输出进程,其中每个进程请求访问 Azure Key Vault,以获取其他 Azure 资源/组件的 secret 和设置。但是我们
基于给出的文档here 。使用 DefaultAzureCredentials() 时,它将检查环境变量,然后检查 ManagedIdentity 等。在我的测试中,我部署了系统托管服务身份 AKS。
基于给出的文档here 。使用 DefaultAzureCredentials() 时,它将检查环境变量,然后检查 ManagedIdentity 等。在我的测试中,我部署了系统托管服务身份 AKS。
我正在尝试在 Azure AD 中进行服务到服务身份验证。当两个服务(webapps)针对 Azure AD 应用程序注册在本地运行时,我可以正常工作。但是,当 Web 应用程序在 Azure 中运行
我们正在尝试使用 Azure 用户分配的托管标识和 python SDK 对 DefaultAzureCredential 进行身份验证。我们看到的方法是在 python SDK guidance 之
我是一名优秀的程序员,十分优秀!