
# 연결의 OIDC 구성 조회

`GET /v1/connections/{connection_id}/oidc` · 권한 `connections:read`

기업 OIDC 연결의 릴라잉 파티(Relying Party) 구성을 반환합니다. 여기에는 ID 공급자에 등록할 `redirect_uri`, `issuer`, `client_id`, 클라이언트 인증 방식, 공급자 프로필이 포함됩니다. 클라이언트 시크릿은 절대 반환되지 않습니다. 응답에는 시크릿이 저장되어 있는지(`client_secret_configured`)와, 날짜를 지정한 경우 만료 시점만 표시됩니다. `ETag` 헤더에는 구성의 버전이 담겨 있으며, 구성을 업데이트할 때 `If-Match`로 보내야 합니다. 조회는 감사 기록되지 않습니다.

## 요청

| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
| `connection_id` | path | 예 | 기업 연결 ID(`conn_…`). |

## 응답

구성과 `ETag`가 포함된 `200 OK`.

```json
{
  "redirect_uri": "https://acme.eu1.keenauth.app/sso/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/callback",
  "issuer": "https://idp.example.com",
  "client_id": "keenauth-acme",
  "client_auth_method": "client_secret_basic",
  "provider_profile": "generic",
  "client_secret_configured": true,
  "client_secret_expires_at": "2027-04-01T00:00:00Z"
}
```

| 필드 | 설명 |
|---|---|
| `redirect_uri` | ID 공급자에 등록할 콜백입니다. 구성이 처음 기록될 때 고정됩니다. |
| `issuer` | ID 공급자의 issuer URL입니다. |
| `client_id` | ID 공급자에 등록된 클라이언트 ID입니다. |
| `client_auth_method` | `private_key_jwt`, `client_secret_basic`, `client_secret_post` 중 하나입니다. |
| `provider_profile` | `entra`, `okta`, `google`, `keycloak`, `ping`, `onelogin`, `jumpcloud`, `generic` 중 하나입니다. |
| `client_secret_configured` | 클라이언트 시크릿이 저장되어 있는지 여부입니다. 그 값은 반환되지 않습니다. |
| `client_secret_expires_at` | ID 공급자가 시크릿을 만료시키는 시점입니다. 지정하지 않았다면 `null`입니다. |

## 오류

| HTTP | code | 발생 조건 |
|---|---|---|
| 404 | `not_found` | 연결이 이 환경에 없거나, 기업 OIDC 연결이 아니거나, 아직 OIDC 구성이 없습니다. |
| 401 | `unauthenticated` | 자격 증명이 없거나, 유효하지 않거나, 폐기되었습니다. |
| 403 | `insufficient_permissions` | 자격 증명에 필요한 권한이 없습니다. |
| 429 | `rate_limited` | 요청 한도를 초과했습니다. `Retry-After` 기간 이후에 다시 시도하세요. |
| 503 | `service_unavailable` | 종속 서비스를 일시적으로 사용할 수 없습니다. `Retry-After` 기간 이후에 다시 시도하세요. |

## 예시

```bash
curl -i "https://api.eu.keenauth.com/v1/connections/conn_01j9xp6q0r1s5t7v9w1x3y5z7b/oidc" \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```

```bash
keenauth connections oidc get conn_01j9xp6q0r1s5t7v9w1x3y5z7b
```
