Azure API 管理无法使用 azure b2c 进行授权 : Signature Failed

标签 azure azure-ad-b2c azure-api-management

我已经在 b2c 中配置了后端应用程序 (api) 和 azure apim devportal(客户端应用程序)。我已经提供了从客户端应用程序访问后端 api 的权限。我有 使用它在 azure api 管理中配置 oauth 身份验证。

我正在使用授权代码流程。对于 token 验证,我使用了入站策略:

 <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized" require-expiration-time="true" require-scheme="Bearer" require-signed-tokens="true" clock-skew="0">
        <openid-config url="https://<domain>/tenantid/v2.0/.well-known/openid-configuration?p=signinsignup_policy" />
        <required-claims>
            <claim name="aud">
                <value><appid for backend app></value>
            </claim>
        </required-claims>
    </validate-jwt>

在 apim 开发者门户尝试时 我在使用收到的 token 时遇到以下错误:。

JWT 验证失败:IDX10501:签名验证失败。无法匹配键

我已将后端 api 应用程序 ID 配置为资源,并将 user_impersonation 配置为默认范围。解码 token 我可以看到与 aud 相同的后端 appid。我也尝试使用 appid uri 作为资源,但看到相同的错误。

感谢任何帮助。

最佳答案

有几种情况可能会导致此错误。 您检查过以下线程吗

Azure AD B2C error - IDX10501: Signature validation failed

https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/issues/18

如果上述方法没有帮助:我假设您正在使用自定义策略。创建签名 key 和加密时,您必须遵循 https://learn.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-get-started-custom 中描述的步骤。 。

如果您在创建 TokenSigning 时跳过或修改 key 类型/ key 用法 & TokenEncryption key 有机会遇到该问题。

以下步骤是我在将 B2C 与 API 管理集成时尝试的。它正在按预期工作

HTH

关于Azure API 管理无法使用 azure b2c 进行授权 : Signature Failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55984143/

相关文章:

c# - 将数据存储在 Azure WebJob 中

azure - 无法访问office365组中的日历

azure-api-management - Azure API 网关策略

消费定价中的 Azure API 管理服务分析

azure - Azure 部署中的deployment().name 值来自哪里?

azure - az 存储帐户网络规则不适用于 Microsoft 托管代理 (Azure DevOps)

azure - 恢复 "Access the user'的配置文件“API访问”

azure - ADB2C身份体验框架: access token use just after an authentification

azure-active-directory - Azure AD B2C - 用户类型 'Guest' 或 'Member'

azure - 如何使用 log-to-eventhub 策略将带有请求和响应的单个事件发送到事件中心