> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iru.com/llms.txt
> Use this file to discover all available pages before exploring further.

# OIDC 애플리케이션

> Iru Identity에서 OIDC 애플리케이션 구성: 클라이언트 자격 증명 및 교체, 리디렉션 URI, 스코프, 클레임 매핑, 서명 키 및 세션 길이.

**OIDC 애플리케이션**을 사용하면 Iru가 ID 공급자 역할을 하여 사용자가 OpenID
Connect를 지원하는 서비스에 로그인할 수 있습니다. Iru는 서비스에 **클라이언트 ID**와
**클라이언트 시크릿**을 발급하고, 로그인 후 **ID 토큰**을 전송하며, 사용자의 프로필
속성을 해당 토큰의 **클레임**에 매핑합니다.

이 섹션을 사용하여 사용자 지정 OIDC 앱 또는
[템플릿에서 분리한](/ko/identity/applications/application-templates) 앱을 구성하세요.
구성은 **초안**에서 편집한 다음 current 버전으로 설정합니다. 버전 모델은
[애플리케이션 개요](/ko/identity/applications/applications-overview)를 참조하세요.

## 1단계: 클라이언트 자격 증명 저장

OIDC 앱을 생성하면 Iru가 **클라이언트 ID**와 **클라이언트 시크릿**을 생성합니다.
시크릿은 **한 번만** 표시되므로 대화 상자를 닫기 전에 둘 다 안전한 곳에 복사하세요.

<Warning>
  클라이언트 시크릿은 생성 후 다시 표시되지 않습니다. 분실한 경우 시크릿을 교체하여
  새 시크릿을 생성하세요.
</Warning>

앱의 **Protocol details**에는 서비스가 Iru와 통신하는 데 필요한 엔드포인트도
나열됩니다.

| 세부 정보 | 설명 |
| - | - |
| **Client ID** | 앱의 공개 식별자. |
| **Well-Known URL** | OpenID 검색 문서. 많은 서비스가 이 URL 하나로 모든 것을 구성합니다. |
| **Token Endpoint** | 서비스가 인증 코드를 토큰으로 교환하는 곳. |
| **User Info Endpoint** | 서비스가 로그인한 사용자의 프로필 클레임을 읽는 곳. |

## 2단계: 리디렉션 URI 설정

앱의 **초안**에서 OIDC 설정 아래에 Iru가 리디렉션할 수 있는 URI를 추가합니다.

<Steps>
  <Step title="허용된 로그인 리디렉션 URI">
    로그인 성공 후 Iru가 사용자를 돌려보내는 곳입니다. 서비스가 사용하는 모든 URL을
    추가하세요.
  </Step>

  <Step title="허용된 로그아웃 리디렉션 URI">
    로그아웃 후 Iru가 사용자를 돌려보내는 곳입니다.
  </Step>
</Steps>

<Note>
  리디렉션 URI는 정확히 일치해야 합니다. 리디렉션 URI에 와일드카드를 허용하는
  옵션이 있지만, 정확한 일치가 더 안전하므로 서비스에서 특별히 요구하지 않는 한
  꺼 두세요.
</Note>

## 3단계: 스코프 선택

**스코프**는 서비스가 요청할 수 있는 클레임 범주를 제어합니다. Iru는 표준 OpenID
Connect 스코프를 제공합니다.

| 스코프 | 액세스 권한 부여 대상 |
| - | - |
| **OpenID** (`openid`) | OpenID Connect에 필수이며 항상 포함됩니다. |
| **Profile** (`profile`) | 기본 프로필 클레임. |
| **이메일** (`email`) | 사용자의 이메일. |
| **Address** (`address`) | 사용자의 주소. |
| **Phone** (`phone`) | 사용자의 전화번호. |
| **Offline access** (`offline_access`) | 서비스가 다시 묻지 않고 로그인 상태를 유지할 수 있도록 하는 새로 고침 토큰. |

<Tip>
  `openid`는 항상 존재하며 제거할 수 없습니다. 서비스에 실제로 필요한 추가 스코프만
  활성화하세요.
</Tip>

## 4단계: Subject 및 클레임 매핑

애플리케이션의 **매핑**을 엽니다. 매핑에는 **제목**과 추가 **클레임**이 있습니다.

### Subject

Subject는 로그인한 사용자의 기본 식별자이며 `sub` 클레임으로 전송됩니다. OIDC
앱의 경우 기본 Subject는 사용자의 `user.id`에서 매핑됩니다. 값을 가져오는 소스를
변경하고 스코프와 연결할 수 있습니다.

### 클레임

서비스가 ID 토큰에서 기대하는 추가 클레임을 추가합니다. 각 클레임에 대해 다음을
설정합니다.

* **Name:** 클레임 이름.
* **값:** 값을 가져오는 프로필 속성 또는 표현식.
* **스코프:** 클레임이 속한 스코프.
* **활성화** 여부.

실시간 **미리 보기**에 생성될 토큰이 표시되므로 게시하기 전에 클레임을 확인할 수
있습니다.

<Warning>
  일부 클레임 이름은 OpenID Connect 표준에서 예약되어 있어 사용자 지정 클레임으로
  사용할 수 없습니다: `iss`, `aud`, `exp`, `nbf`, `iat`, `jti`.
</Warning>

## 5단계: 클라이언트 시크릿 교체

클라이언트 시크릿은 앱을 다시 생성하지 않고 앱의
**Protocol details → Client secrets**에서 교체할 수 있습니다.

<AccordionGroup>
  <Accordion title="교체" icon="rotate">
    **Rotate**는 새 클라이언트 시크릿을 발급하며, 이전 시크릿은 **24시간** 동안 계속
    작동하므로 이전 시크릿이 중지되기 전에 서비스를 업데이트할 수 있습니다. 이 기간
    동안 이전 시크릿은 **Expires Soon** 배지와 함께 나열되며, 새로 발급된 시크릿은
    장기간 유효합니다.
  </Accordion>

  <Accordion title="무효화" icon="ban">
    **Invalidate**는 유예 기간 없이 현재 시크릿을 즉시 종료합니다. 시크릿이 노출되었을
    수 있는 경우 사용하고, 즉시 서비스를 업데이트하세요.
  </Accordion>
</AccordionGroup>

<Note>
  Iru는 ID 토큰 서명에 사용하는 서명 키를 관리하고 검색 및 키 엔드포인트에
  게시하므로, 서비스가 토큰을 자동으로 검증합니다. 수동으로 교체할 것이 없습니다.
</Note>

## 6단계: 게시, 할당 및 활성화

<Steps>
  <Step title="초안을 current로 설정">
    초안을 게시하여 실시간 구성으로 만듭니다.
  </Step>

  <Step title="액세스 할당">
    앱을 사용해야 하는 그룹을 할당합니다.
    [액세스 할당](/ko/identity/applications/assigning-access)을 참조하세요.
  </Step>

  <Step title="활성화">
    할당된 사용자가 로그인할 수 있도록 앱을 활성화합니다.
  </Step>

  <Step title="로그인 테스트">
    앱 대시보드에서 테스트 사용자로 로그인하여 경험을 확인합니다.
  </Step>
</Steps>

## 인증 흐름

OIDC 앱은 **인증 코드 흐름**으로 사용자를 로그인시킵니다.

<Steps>
  <Step title="Iru로 리디렉션">
    앱이 로그인을 위해 사용자를 Iru로 보냅니다.
  </Step>

  <Step title="인증 및 정책 평가">
    Iru가 사용자를 인증하고 앱의
    [인증 정책](/ko/identity/authentication/authentication-policies)을 평가합니다.
  </Step>

  <Step title="인증 코드 반환">
    Iru가 수명이 짧은 인증 **코드**와 함께 앱의 **리디렉션 URI**로 다시
    리디렉션합니다.
  </Step>

  <Step title="코드를 토큰으로 교환">
    앱이 Iru의 **토큰 엔드포인트**에서 코드를 **ID 토큰**(사용자가 누구인지)과
    **액세스 토큰**으로 교환합니다.
  </Step>

  <Step title="클레임 읽기(및 로그인 유지)">
    앱은 액세스 토큰으로 **사용자 정보 엔드포인트**를 호출하여 프로필 클레임을 읽을
    수 있으며, (`offline_access`를 활성화한 경우) **새로 고침 토큰**을 사용하여
    로그인 상태를 유지할 수 있습니다.
  </Step>
</Steps>

대부분의 라이브러리는 **Protocol details**의 **Well-Known URL**에서 이 전체 흐름을
구성합니다.

## 다음 단계

<CardGroup cols={2}>
  <Card title="액세스 할당" icon="user-check" href="/ko/identity/applications/assigning-access">
    사용자 및 그룹에 앱을 부여합니다.
  </Card>

  <Card title="프로비저닝" icon="arrows-rotate" href="/ko/identity/applications/provisioning">
    액세스가 변경되면 앱에서 계정을 자동으로 생성하고 제거합니다.
  </Card>

  <Card title="인증 정책" icon="shield-halved" href="/ko/identity/authentication/authentication-policies">
    로그인할 수 있는 사람과 증명해야 하는 내용을 결정합니다.
  </Card>

  <Card title="애플리케이션 개요" icon="grip" href="/ko/identity/applications/applications-overview">
    프로토콜과 초안에서 current로의 버전 모델을 검토합니다.
  </Card>
</CardGroup>
