ID 공급자 조회
지정한 ID 공급자의 기본 정보와 설정 명세, 현재 설정값을 함께 조회합니다. protected로 표시된 설정 키는 값이 마스킹된 상태로 반환됩니다.
필요 권한
관리자 이상의 계정으로 이용할 수 있습니다.
HTTP 요청
GET /api/sonar/id-providers/:code
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
https://HOSTNAME/api/sonar/id-providers/saml
요청 매개변수
| 키 | 필수 | 타입 | 설명 | 비고 |
|---|---|---|---|---|
| code | O | 문자열 | ID 공급자 코드 | - |
| locale | X | 문자열 | 로케일 | - |
정상 응답
{
"code": "saml",
"name": "SAML",
"path": "/sso/saml",
"icon": "iVBORw0KGgoAAAANSUhEUgAA...",
"enabled": true,
"description": "본사 SAML IdP 연동",
"created": "2026-04-01 10:00:00+0900",
"updated": "2026-04-15 09:00:00+0900",
"configs": [
{
"name": "identifier",
"protected": false,
"value": "email",
"type": "string",
"subtype": null,
"required": true,
"display_name": "식별자",
"description": "계정 매칭 식별자 (login 또는 email)",
"default_value": null,
"min": null,
"max": null
},
{
"name": "create_user",
"protected": false,
"value": true,
"type": "boolean",
"subtype": null,
"required": true,
"display_name": "계정 생성 여부",
"description": "계정 생성 여부",
"default_value": null,
"min": null,
"max": null
},
{
"name": "idp_url",
"protected": false,
"value": "https://idp.example.com/saml",
"type": "string",
"subtype": null,
"required": true,
"display_name": "IdP URL",
"description": "SAML IdP 엔드포인트",
"default_value": null,
"min": null,
"max": null
},
{
"name": "client_secret",
"protected": true,
"value": "",
"type": "string",
"subtype": null,
"required": true,
"display_name": "클라이언트 암호",
"description": "",
"default_value": null,
"min": null,
"max": null
}
]
}
- code (문자열): ID 공급자 코드
- name (문자열): 로케일이 적용된 표시 이름
- path (문자열): SSO 로그인 진입 경로. 웹 콘솔을 기준으로 하는 상대 경로이며 절대 URL이 아닙니다. 항상
/sso/<code>형식입니다 - icon (문자열): 아이콘 이미지를 표준 Base64로 인코딩한 문자열.
data:URI 접두사는 붙지 않습니다. 아이콘이 없으면null이며, 이미지 형식(MIME 타입)은 응답에 포함되지 않습니다 - enabled (불리언): 활성화 여부
- description (문자열): 사용자가 입력한 설명. 설명이 없으면
null - created (문자열): 생성 시각.
yyyy-MM-dd HH:mm:ssZ형식 - updated (문자열): 마지막 수정 시각.
yyyy-MM-dd HH:mm:ssZ형식. 설정 저장소로 SQLite를 사용하는 설치 환경에서는 값이 갱신되지 않고 생성 시각으로 고정됩니다 - configs (배열): ID 공급자 설정 명세와 현재 값
- name (문자열): 설정 키
- protected (불리언): 보호 설정 여부.
true인 경우value는 마스킹되어 반환 - value (객체): 현재 설정값. 저장된 값이 없으면
null - type (문자열): 데이터 타입.
string,integer,boolean중 하나 - subtype (문자열): UI에서 인식하는 확장 컴포넌트 유형. 지정되지 않으면
null - required (불리언): 필수 여부
- display_name (문자열): 로케일이 적용된 화면 표시 이름
- description (문자열): 로케일이 적용된 화면 표시 설명
- default_value (문자열): 기본값.
subtype이enum인 경우null - selectable (문자열): 선택 가능한 값 목록.
subtype이enum인 경우에만 포함 - min (숫자): 최솟값 제약. 제약이 없으면
null - max (숫자): 최댓값 제약. 제약이 없으면
null
설정 항목 목록 맨 앞의 identifier와 create_user는 ID 공급자 유형과 무관하게 소나가 공통으로 추가하는 필수 항목입니다. 두 항목의 의미는 ID 공급자 유형 설정 명세 조회를 참고하십시오.
보호 설정 항목의 값은 저장된 값이 있으면 빈 문자열로 마스킹되어 반환되고, 저장된 값이 없으면 null로 반환됩니다. 저장된 실제 값은 어떤 경우에도 응답에 포함되지 않습니다. ID 공급자 수정의 configs는 부분 병합이 아니라 전체 대체 방식이므로, 이 조회 응답을 그대로 수정 요청에 전달하면 저장되어 있던 보호 값이 빈 문자열로 대체됩니다.
Note
보호 설정 항목의 값을 유지하려면 수정 요청에 실제 값을 다시 담아 보내야 합니다. 조회 응답의 마스킹된 값을 그대로 전달하면 저장되어 있던 값이 빈 문자열로 덮어써집니다.
ID 공급자가 등록되어 있으나 설정이 저장되지 않은 상태에서 조회하면 오류가 아니라 enabled가 false, description과 created, updated가 null, 각 설정 항목의 value가 null인 응답이 반환됩니다.
오류 응답
ID 공급자가 존재하지 않는 경우
HTTP 상태 코드 400 응답
{
"error_code": "invalid-argument",
"error_msg": "provider not found: saml"
}
권한이 없는 경우
HTTP 상태 코드 500 응답
{
"error_code": "illegal-state",
"error_msg": "no-permission"
}
ID 공급자 조회가 권한 검사보다 먼저 수행되므로, SSO 조회 권한이 없는 계정도 등록되지 않은 코드를 요청하면 권한 오류가 아니라 provider not found 오류를 먼저 받습니다.