Google Cloud Endpoints中的身份验证标题与查询参数



我已经尝试了所有内容,但是我无法使用Authentication:Bearer标头使用Google Cloud Endpoints访问API。根据云端点文档:

出于安全原因,当您使用身份验证令牌发送请求时,我们建议您将令牌放在授权中:持票人头。

它还说:

如果您在发送请求时无法使用标题,则可以将身份验证令牌放入称为access_token的查询参数中。

我可以在我的URL中使用access_token=" +idToken完美访问API。但是,当我尝试以这样的身份验证标头发送HTTP请求时:

const url =
        "https://<PROJECTNAME>.appspot.com/getbalance";
    axios
        .get(url,{headers:{'Authentication':'Bearer '+idToken}})
        .then(response => {
            console.log(response.data);
        })
        .catch(error => {
            console.log(error);
        });

我得到此错误:

JWT validation failed: Missing or invalid credentials

在查询参数中发送令牌与在标题中发送一样安全?

您的代码示例显示您设置auth enterication 标题,而不是auth ORIAGY header。您通常不应使用查询参数,因为它可能会在云控制台中登录。

使用"授权:承载"时,您需要使用通过OAuth 2.0 Authentication获得的访问令牌。

如果您再次使用Oauth游乐场,则可以说明这一点。

请记住,如果您想使用OAuth Playground访问Firebase数据库,则需要在操场屏幕右上方的Gear Icon上配置Firebase Project的客户ID和客户端秘密。还要确保使用这些范围:

  • https://www.googleapis.com/auth/userinfo.email

  • https://www.googleapis.com/auth/firebase.database

完成所有步骤后,您将能够使用授权标头和获得的访问令牌提出REST请求。

最新更新