如何在Jenkins中通过Okta API实现按需创建Okta用户
Jenkins 按需创建Okta用户作业实现方案
前置配置
- 申请Okta API权限:进入Okta管理后台创建服务账号,分配
okta.users.manage操作权限,生成API Token后妥善留存。 - Jenkins侧存储凭证:将生成的Okta API Token、你的Okta域名存到Jenkins凭证管理器中,类型选择
Secret text即可,禁止硬编码在作业脚本中。 - 安装必要插件:Jenkins端安装
Pipeline、Credentials Binding两个核心插件,优先使用流水线作业实现,扩展性更强。
配置作业运行参数
因为是按需触发的作业,需要先配置构建参数,收集Okta用户必填属性:
- 添加字符串类型参数:
email(用户邮箱,Okta必填)、username(Okta登录用户名)、firstName(用户姓名)、lastName(用户姓氏),有额外自定义属性需求可同步添加对应参数。
核心作业逻辑实现
以下为流水线作业示例脚本,直接复用即可:
pipeline { agent any parameters { string(name: 'email', defaultValue: '', description: '用户邮箱,Okta必填属性') string(name: 'username', defaultValue: '', description: 'Okta登录用户名') string(name: 'firstName', defaultValue: '', description: '用户姓名') string(name: 'lastName', defaultValue: '', description: '用户姓氏') } environment { // 引号内替换为你Jenkins凭证管理器中存储的Okta Token对应的凭证ID OKTA_TOKEN = credentials('okta-api-token-id') // 替换为你的企业Okta域名 OKTA_DOMAIN = 'https://你的企业前缀.okta.com' } stages { // 可选:前置校验用户是否已存在,避免重复创建报错 stage('校验用户是否已存在') { steps { script { def statusCode = sh(returnStdout: true, script: ''' curl -s -o /dev/null -w "%{http_code}" "${OKTA_DOMAIN}/api/v1/users/${email}" \\ -H "Authorization: SSWS ${OKTA_TOKEN}" ''').trim() if (statusCode == '200') { error("用户${email}已在Okta中存在,无需重复创建") } } } } stage('创建Okta用户') { steps { sh ''' curl -X POST "${OKTA_DOMAIN}/api/v1/users?activate=true" \\ -H "Accept: application/json" \\ -H "Content-Type: application/json" \\ -H "Authorization: SSWS ${OKTA_TOKEN}" \\ -d '{ "profile": { "firstName": "'"${firstName}"'", "lastName": "'"${lastName}"'", "email": "'"${email}"'", "login": "'"${username}"'" } }' ''' } } } }
说明:请求路径中的
?activate=true代表创建用户后直接激活,若需要创建后待用户自主激活,删除该参数即可。如果需要添加更多Okta用户自定义属性,直接往请求体的profile字段中新增对应键值对即可。
内容的提问来源于stack exchange,提问作者Ronita Roy
相关产品推荐
相关产品推荐

