///
Search
moon
sun
5️⃣

Okta API를 통한 다수 사용자 활성화 이메일 발송

개요

Okta API를 이용하여 STAGED 또는 PROVISIONED(Pending User Action) 상태의 사용자에게 Activation Email을 일괄 발송할 수 있습니다.
사용자 상태에 따라 사용하는 API가 다르므로 먼저 사용자 상태를 확인한 후 적절한 API를 호출해야 합니다.
User Status
Admin Console
사용 API
STAGED
Staged
activate
PROVISIONED
Pending User Action
reactivate

1. 환경변수 설정

먼저 Okta Domain과 API Token을 환경변수로 등록합니다.
export OKTA_DOMAIN="설정한도메인.okta.com" export OKTA_API_TOKEN="Okta에서 발급받은_API_Token"
Bash
복사
참고
Okta API Token은 Security → API → Tokens → Create Token 메뉴에서 생성할 수 있습니다.

2. 환경변수 설정 확인

환경변수가 정상적으로 등록되었는지 확인합니다.
echo $OKTA_DOMAIN
Bash
복사
예시
company.okta.com
Plain Text
복사
또는 Token 길이를 확인할 수도 있습니다.
printf 'DOMAIN=%s\nTOKEN_LENGTH=%s\n' "$OKTA_DOMAIN" "${#OKTA_API_TOKEN}"
Bash
복사
예시
DOMAIN=company.okta.com TOKEN_LENGTH=42
Plain Text
복사

3. PROVISIONED(Pending User Action) 사용자 조회

여러 줄 명령어를 사용할 경우 각 줄 끝의 역슬래시(\) 뒤에는 공백이나 다른 문자가 없어야 합니다. 복사·붙여넣기 과정에서 공백이나 스마트 따옴표가 들어가면 quote>, dquote> 또는 blank argument 오류가 발생할 수 있으므로, 실제 실행 시에는 한 줄 명령어 사용을 권장합니다.
현재 Pending User Action 상태의 사용자를 조회합니다.
curl -sS \ -H "Authorization: SSWS ${OKTA_API_TOKEN}" \ -H "Accept: application/json" \ --get \ --data-urlencode 'filter=status eq "PROVISIONED"' \ --data-urlencode 'limit=200' \ "https://${OKTA_DOMAIN}/api/v1/users"
Bash
복사
한 줄 실행용
curl -sS -H "Authorization: SSWS ${OKTA_API_TOKEN}" -H "Accept: application/json" --get --data-urlencode 'filter=status eq "PROVISIONED"' --data-urlencode 'limit=200' "https://${OKTA_DOMAIN}/api/v1/users"
JavaScript
복사
→ 명령이 정상적으로 실행되면 사용자 정보가 JSON 형식으로 출력됩니다.
사용자 ID, 로그인 ID, 상태만 확인
curl -sS -H "Authorization: SSWS ${OKTA_API_TOKEN}" -H "Accept: application/json" --get --data-urlencode 'filter=status eq "PROVISIONED"' --data-urlencode 'limit=200' "https://${OKTA_DOMAIN}/api/v1/users" | jq -r '.[] | [.id, .profile.login, .status] | @tsv'
JavaScript
복사
출력 예시:
00u15z2iau0x7miNT698 test1@atoncorp.com PROVISIONED 00u15z2iaw1za4Npm698 test2@atoncorp.com PROVISIONED 00u15z2m7ymi9IEKF698 test3@atoncorp.com PROVISIONED
JavaScript
복사

4. PROVISIONED 사용자 1명 Activation Email 재발송 (권장)

전체 사용자에게 Activation 이메일을 일괄 발송하기 전에, 반드시 사용자 1명을 대상으로 테스트 발송하는 것을 권장합니다.
명령어의 {USER_ID} 부분에는 3단계 조회 결과에서 확인한 대상 사용자의 Okta User ID를 입력합니다.
Okta User ID는 일반적으로 00u로 시작하는 문자열이며, 예시는 다음과 같습니다.
00u123456789abcde698
Plain Text
복사
{USER_ID} 중괄호까지 포함하여 입력하는 것이 아니라, 해당 부분 전체를 실제 사용자 ID로 교체해야 합니다.
curl -X POST \ -H "Authorization: SSWS ${OKTA_API_TOKEN}" \ -H "Accept: application/json" \ "https://${OKTA_DOMAIN}/api/v1/users/{USER_ID}/lifecycle/reactivate?sendEmail=true"
Bash
복사
한 줄 실행용:
curl -sS -i -X POST -H "Authorization: SSWS ${OKTA_API_TOKEN}" -H "Accept: application/json" "https://${OKTA_DOMAIN}/api/v1/users/{USER_ID}/lifecycle/reactivate?sendEmail=true"
JavaScript
복사
성공하면 해당 사용자에게 Activation Email이 재발송됩니다.

5. PROVISIONED 사용자 전체 Activation Email 재발송

테스트가 정상적으로 완료되면 아래 명령으로 모든 PROVISIONED 사용자에게 Activation Email을 재발송할 수 있습니다.
한 줄 실행용:
curl -sS --header "Authorization: SSWS ${OKTA_API_TOKEN}" --header "Accept: application/json" --get --data-urlencode 'filter=status eq "PROVISIONED"' --data-urlencode 'limit=200' --url "https://${OKTA_DOMAIN}/api/v1/users" | jq -r '.[].id' | while IFS= read -r id; do http_code=$(curl -sS -o "/tmp/okta_${id}.json" -w "%{http_code}" -X POST --header "Authorization: SSWS ${OKTA_API_TOKEN}" --header "Accept: application/json" --url "https://${OKTA_DOMAIN}/api/v1/users/${id}/lifecycle/reactivate?sendEmail=true"); echo "Reactivate: ${id} / HTTP ${http_code}"; if [ "$http_code" != "200" ]; then cat "/tmp/okta_${id}.json"; echo; fi; done
JavaScript
복사
실행 결과 예시:
Reactivate: 00u123abc456 / HTTP 200 Reactivate: 00u456def789 / HTTP 200 Reactivate: 00u789ghi123 / HTTP 200
Plain Text
복사
HTTP 200이 반환되면 Activation Email이 정상적으로 재발송된 것입니다.

참고 사항

PROVISIONED 상태는 Admin Console에서 Pending User Action으로 표시됩니다.
PROVISIONED 상태에서는 reactivate API를 사용해야 합니다.
STAGED 상태에서는 activate API를 사용해야 합니다.
운영 환경에서는 반드시 1명의 사용자로 테스트 후 전체 실행하는 것을 권장합니다.
API Token은 적절한 관리자 권한을 가진 계정으로 생성해야 하며, 외부에 노출되지 않도록 주의해야 합니다.