개요
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은 적절한 관리자 권한을 가진 계정으로 생성해야 하며, 외부에 노출되지 않도록 주의해야 합니다.


