能否通过编程创建Google Workspace SAML应用?求示例脚本
编程创建Google Workspace SAML应用的可行性及脚本示例
可以通过Google Workspace Admin SDK中的SAML Apps API实现编程创建SAML应用,该API支持自动化完成SAML应用的创建、配置与管理操作。
前提条件
- 拥有Google Workspace超级管理员权限
- 在Google Cloud Console中启用Admin SDK API
- 创建并下载服务账号密钥(JSON格式),完成域范围授权(允许服务账号以超级管理员身份调用API)
Python脚本示例
首先安装依赖库:
pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
脚本代码:
from google.oauth2 import service_account from googleapiclient.discovery import build # 自定义配置参数 SERVICE_ACCOUNT_KEY_PATH = 'your-service-account-key.json' ADMIN_EMAIL = 'admin@your-domain.com' DOMAIN_NAME = 'your-domain.com' # API授权范围 AUTH_SCOPES = [ 'https://www.googleapis.com/auth/admin.directory.apps' ] def create_saml_application(): # 构建服务账号凭证 credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_KEY_PATH, scopes=AUTH_SCOPES ) # 委托超级管理员权限 delegated_creds = credentials.with_subject(ADMIN_EMAIL) # 初始化Admin SDK服务 admin_service = build('admin', 'directory_v1', credentials=delegated_creds) # 构造SAML应用配置体 saml_app_config = { "name": "API创建的SAML测试应用", "description": "通过Admin SDK自动化创建的SAML应用", "samlSettings": { "acsUrl": "https://your-app.example.com/saml/acs", "entityId": "https://your-app.example.com/saml/metadata", "ssoUrl": "https://accounts.google.com/o/saml2/idp?idpid=YOUR_IDP_ID", "nameIdFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "nameIdMapping": "userPrimaryEmail" } } # 调用API创建应用 try: response = admin_service.apps().insert( customer='my_customer', body=saml_app_config ).execute() print(f"SAML应用创建成功,应用ID: {response['id']}") return response except Exception as err: print(f"创建失败: {str(err)}") return None if __name__ == '__main__': create_saml_application()
脚本使用指引
- 替换配置参数:
SERVICE_ACCOUNT_KEY_PATH:你的服务账号密钥文件路径ADMIN_EMAIL:Google Workspace超级管理员邮箱samlSettings中的acsUrl、entityId:替换为目标应用的实际SAML端点ssoUrl:从Google Workspace管理控制台的IDP元数据中获取(路径:安全 > 设置 > SSO与SAML应用 > 配置SAML单点登录)
- 确保服务账号已完成域范围授权:在Google Workspace管理控制台中,将服务账号的客户端ID与Admin SDK的授权范围绑定,并指定超级管理员作为委托用户
- 运行脚本即可完成SAML应用创建
注意事项
- 测试阶段建议在非生产环境验证配置
- 如需添加属性映射、签名算法等高级配置,可扩展
samlSettings字段,参考Admin SDK API的参数定义
内容的提问来源于stack exchange,提问作者apatian
相关产品推荐
相关产品推荐

