对用户进行身份验证

本页面介绍如何使用 Cloud Endpoints Frameworks 在您的 API 中添加对于通过客户端应用进行用户身份验证的支持。请注意,目前支持 Android 和 JavaScript 客户端。

Endpoints Frameworks 支持通过使用以下任何方法的客户端应用对用户进行身份验证:

无论您使用哪种身份验证方法,在需要检查身份验证是否正确的每种 API 方法中,都必须检查是否存在有效的 User,具体如以下部分所述:

前提条件

本页面假定您已经完成以下操作:

使用 Firebase 身份验证进行身份验证

要支持使用 Firebase 身份验证的客户端发起的调用,请执行以下操作:

  1. 创建一个 Firebase 项目(如果您尚未创建)。Firebase 项目是使用 Firebase 服务的 Google Cloud 控制台项目。如需了解详情,请参阅 Firebase 项目介绍和 Firebase 文档。

  2. 将以下操作所提到的参数添加到您的 @Api 或方法注释中:

    • 向注释添加 authenticators 参数,将其设置为值 {EspAuthenticator.class}。
    • 添加一个 issuers 参数,其中包含设置为 Firebase 的 @ApiIssuer。
    • 添加一个 issuerAudiences 参数,其中包含设置为 Firebase 的 @ApiIssuerAudience 和您的项目 ID。

    例如:

    @Api(
        name = "YOUR_API_NAME",
        version = "VERSION_NUMBER",
        authenticators = {EspAuthenticator.class},
        issuers = {
            @ApiIssuer(
                name = "firebase",
                issuer = "https://securetoken.google.com/YOUR_PROJECT_ID",
                jwksUri = "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@")
        },
        issuerAudiences = {
            @ApiIssuerAudience(name = "firebase", audiences = "YOUR_PROJECT_ID")
        })
    
    • 将 YOUR_API_NAME 替换为您的 API 名称。
    • 将 VERSION_NUMBER 替换为您的 API 版本,例如 v1。
    • 将 YOUR_PROJECT_ID 的两个实例替换为您的 Firebase 项目 ID。
  3. 在您的 API 实现代码中,导入 Users:

    import com.google.api.server.spi.auth.common.User;
    
  4. 在需要检查身份验证是否正确的每种 API 方法中,检查是否存在有效的 User,如果不存在,则引发异常,具体如以下方法定义示例中所示:

    @ApiMethod(httpMethod = ApiMethod.HttpMethod.GET)
    public Email getUserEmail(User user) throws UnauthorizedException {
      if (user == null) {
        throw