如何使用boto3或SCIM API在AWS SSO组中创建用户?
AWS SSO 用户创建指引(Boto3 + SCIM API)
一、用Boto3创建AWS SSO用户并加入组
AWS SSO的用户/组管理并不在sso-admin客户端中,而是由identitystore客户端负责——这个服务专门处理AWS SSO内部身份存储的用户、组及成员关系操作。具体步骤如下:
获取Identity Store ID
先通过sso-admin客户端获取你的AWS SSO实例对应的Identity Store ID:import boto3 sso_admin = boto3.client('sso-admin') instances = sso_admin.list_instances() identity_store_id = instances['Instances'][0]['IdentityStoreId']创建用户
初始化identitystore客户端,调用create_user方法创建用户:identity_store = boto3.client('identitystore') user_response = identity_store.create_user( IdentityStoreId=identity_store_id, UserName='johndoe', Name={ 'GivenName': 'John', 'FamilyName': 'Doe' }, Emails=[{ 'Value': 'john.doe@example.com', 'Primary': True }] ) user_id = user_response['UserId']将用户加入指定组
先通过list_groups查找目标组的ID,再调用create_group_membership完成添加:# 查找目标组ID(示例组名为"Engineering-Team") groups = identity_store.list_groups( IdentityStoreId=identity_store_id, Filters=[{'AttributePath': 'DisplayName', 'AttributeValue': 'Engineering-Team'}] ) group_id = groups['Groups'][0]['GroupId'] # 添加用户到组 identity_store.create_group_membership( IdentityStoreId=identity_store_id, GroupId=group_id, MemberId={'UserId': user_id} )
二、用SCIM API创建用户
如果你的AWS SSO启用了SCIM同步(可用于外部IDP集成,也可单独调用API),按以下步骤操作:
准备SCIM凭证
在AWS SSO控制台的「设置」>「身份源」>「SCIM配置」中启用SCIM,复制生成的SCIM endpoint URL和「API访问令牌」。发送SCIM创建用户请求
用HTTP POST请求调用SCIM用户创建接口,请求体需符合SCIM 2.0规范。以下是Pythonrequests库的示例:import requests scim_endpoint = "https://scim.us-east-1.amazonaws.com/xxxxxx/Users" api_token = "your-scim-api-token" headers = { "Authorization": f"Bearer {api_token}", "Content-Type": "application/scim+json" } user_payload = { "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "userName": "janedoe@example.com", "name": { "givenName": "Jane", "familyName": "Doe" }, "emails": [ { "value": "janedoe@example.com", "type": "work", "primary": True } ], "active": True } response = requests.post(scim_endpoint, json=user_payload, headers=headers) response.raise_for_status() # 检查请求是否成功 created_user = response.json()(可选)将用户加入SCIM组
先通过GET请求{SCIM_ENDPOINT}/Groups找到目标组ID,再发送PATCH请求更新组成员:group_id = "your-group-id" patch_payload = { "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [ { "op": "add", "path": "members", "value": [{"value": created_user['id']}] } ] } requests.patch(f"{scim_endpoint}/Groups/{group_id}", json=patch_payload, headers=headers)
内容的提问来源于stack exchange,提问作者user18148705
相关产品推荐
相关产品推荐

