如何无需私钥连接Google服务账号?能否使用公钥完成认证?
Google服务账号认证:公钥相关问题解答
能否仅通过公钥完成认证?
不行。Google服务账号的认证基于OAuth 2.0的JWT签名流程,必须使用私钥生成带有签名的JWT,以此向Google令牌服务器请求访问令牌。公钥的作用只是让Google验证你提交的JWT签名是否合法,它本身无法生成有效的签名,所以仅靠公钥无法完成认证流程,私钥是必不可少的。
如何修改JSON凭据文件添加公钥及公钥ID?
虽然不能用公钥替代私钥,但可以在服务账号的JSON凭据文件中添加public_key和public_key_id字段,用于一些需要公开验证身份的场景。修改后的JSON格式示例如下:
{ "type": "service_account", "project_id": "project-name", "private_key_id": "...", "private_key": "-----BEGIN PRIVATE KEY-----\n...----END PRIVATE KEY-----\n", "public_key_id": "你的公钥ID", "public_key": "-----BEGIN PUBLIC KEY-----\n...----END PUBLIC KEY-----\n", "client_email": "client-email@project-name.iam.gserviceaccount.com", "client_id": "client-id", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/doh-21%40doh-14.iam.gserviceaccount.com", "universe_domain": "googleapis.com" }
需要注意的是,添加这些公钥字段不会改变认证的核心逻辑,私钥依然是完成认证的必要条件。
内容的提问来源于stack exchange,提问作者Sunny League
相关产品推荐
相关产品推荐

