ID 공급자 조회

지정한 ID 공급자의 기본 정보와 설정 명세, 현재 설정값을 함께 조회합니다. protected로 표시된 설정 키는 값이 마스킹된 상태로 반환됩니다.

필요 권한

관리자 이상의 계정으로 이용할 수 있습니다.

HTTP 요청

GET /api/sonar/id-providers/:code
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
     https://HOSTNAME/api/sonar/id-providers/saml
요청 매개변수
키필수타입설명비고
codeO문자열ID 공급자 코드-
localeX문자열로케일-

정상 응답

{
  "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 오류를 먼저 받습니다.