You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Endpoints Framework与Firebase认证问题:配置未定义身份验证提供者

解决Endpoints Framework部署后"No auth providers are defined in the config"错误

看起来你遇到的问题是虽然在@Api注解里配置了认证相关参数,但生成的OpenAPI配置里并没有正确包含认证提供者,导致部署后触发这个错误。下面是几个关键的排查和修复步骤:

1. 确保Authenticator类正确实现getAuthProviders方法

你的EspAuthenticator类必须继承AbstractAuthenticator,并且必须实现getAuthProviders()方法,返回你定义的认证提供者列表——这是很多人容易忽略的关键点,缺少这个方法会导致Endpoints无法生成包含auth providers的OpenAPI配置。

示例实现代码:

import com.google.api.server.spi.auth.AbstractAuthenticator;
import com.google.api.server.spi.auth.common.AuthProvider;
import java.util.Collections;
import java.util.List;

public class EspAuthenticator extends AbstractAuthenticator {
    private static final String FIREBASE_ISSUER = "https://securetoken.google.com/MY_PROJECT_ID";
    private static final String FIREBASE_JWKS_URI = "https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com";

    @Override
    public AuthProvider getAuthProvider(String authId) {
        // 匹配你在@Api注解里定义的issuer名称"firebase"
        if ("firebase".equals(authId)) {
            return AuthProvider.create()
                .setIssuer(FIREBASE_ISSUER)
                .setJwksUri(FIREBASE_JWKS_URI);
        }
        return null;
    }

    @Override
    public List<AuthProvider> getAuthProviders() {
        // 返回包含Firebase认证提供者的列表,这一步是关键!
        return Collections.singletonList(getAuthProvider("firebase"));
    }
}

2. 补全@Api注解里的jwksUri参数

你的代码里jwksUri没有填写完整,Firebase的标准JWKS地址是https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com,确保@ApiIssuer里的参数完整:

@Api(
    name = "endpoint",
    version = "v1",
    apiKeyRequired = AnnotationBoolean.TRUE,
    authenticators = {EspAuthenticator.class},
    issuers = {
        @ApiIssuer(
            name = "firebase",
            issuer = "https://securetoken.google.com/MY_PROJECT_ID",
            jwksUri = "https://www.googleapis.com/service_accounts/v1/jwk/securetoken@system.gserviceaccount.com"
        )
    }
)

3. 重新生成并部署OpenAPI配置

修改代码后,需要重新生成OpenAPI文档并部署到Endpoints服务,确保新配置覆盖旧的:

  • 如果用Maven,执行命令生成文档:
    mvn endpoints-framework:openApiDocs
    
  • 然后部署生成的openapi.json文件:
    gcloud endpoints services deploy target/openapi-docs/openapi.json
    

4. 验证部署后的OpenAPI配置

部署完成后,你可以通过Endpoints的服务管理页面查看生成的OpenAPI配置,确认securityDefinitions部分是否包含了你的Firebase认证提供者。如果这部分存在,说明配置已经生效。

内容的提问来源于stack exchange,提问作者Degoah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:38:26