Azure API管理无法通过Azure B2C授权:签名失败

时间:2019-05-04 15:39:18

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

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

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

 <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开发人员门户尝试时 使用收到的令牌时,我遇到以下错误:。

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

我已将后端api应用程序id配置为resource,将user_impersonation配置为defaultscope。解码令牌我可以看到与aud相同的后端appid。我也尝试将appid uri用作资源,但看到相同的错误。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

有几种情况可能导致此错误。 您是否检查了以下线程

Azure AD B2C error - IDX10501: Signature validation failed

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

如果上述操作无济于事:我假设您正在使用自定义策略。在创建签名密钥和加密时,必须遵循https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-get-started-custom中描述的步骤。

如果在创建TokenSigning时跳过或修改密钥类型/密钥用法  和TokenEncryption密钥,就有机会解决该问题。

以下是我在将B2C与API管理集成时尝试的步骤。并按预期运行

HTH