oauth2.0 GCP上的IAP_CLIENT_ID

pdtvr36n  于 2023-04-29  发布在  其他
关注(0)|答案(3)|浏览(197)

我尝试从桌面应用程序执行程序化身份验证(链接到教程)。
我在需要IAP_CLIENT_ID的地方卡住了。
使用以下代码,其中REFRESH_TOKEN是登录流中的令牌,IAP_CLIENT_ID是用于访问应用程序的主客户端ID,DESKTOP_CLIENT_ID和DESKTOP_CLIENT_SECRET是客户端
如何生成此IAP_CLIENT_ID?我在哪里能找到它?

8zzbczxx

8zzbczxx1#

您需要转到控制台:

  • API和服务-〉证书
  • 这里有一个表OAuth2 Client ID
  • 查找名称为IAP-App-Engine-app的行
  • 复制该行右侧的客户端ID

ddrv8njm

ddrv8njm2#

您也可以使用gcloud cli获取客户端ID,如下所示:

$ gcloud compute backend-services describe my-backend-pool 
--project=my-project-name --global --format="value[](iap.oauth2ClientId)"
wwwo4jvm

wwwo4jvm3#

有一种非官方的方法可以使用以下代码获取客户端ID(IAP_CLIENT_ID):

import requests
from urllib.parse import urlparse, parse_qs

client_id = None
requires_iap = False

url = "https://myservice.company.com/"

response = requests.get(url, allow_redirects=False)

if response.status_code == 302:
    location = response.headers.get('location')
    query = parse_qs(urlparse(location).query) or {}
    if 'client_id' in query:
        client_id = query['client_id'][0]
        requires_iap = True

if requires_iap:
    print(f"Server requires IAP, IAP_CLIENT_ID={client_id}")
else:
    print("Server does not require IAP")

由于这依赖于内部重定向,将来可能会发生变化,请不要盲目依赖。

相关问题