> ## 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.

# SAML 애플리케이션

> Iru Identity의 SAML 애플리케이션 설정 참조: 공급자 세부 정보, 요청 및 응답 처리, 서명, 속성 매핑 및 세션 길이.

**SAML 애플리케이션**을 사용하면 Iru가 **ID 공급자(IdP)** 역할을 하여 사용자가 SAML
Single Sign-On을 지원하는 서비스에 로그인할 수 있습니다. Iru는 서비스에 필요한
공급자용 세부 정보를 제공하고, 전송하는 응답과 어설션에 서명하며, 사용자의 프로필
속성을 해당 어설션에 매핑합니다.

SAML 앱의 구성은 **초안**에서 편집한 다음 current 버전으로 설정합니다. 버전 모델은
[애플리케이션 개요](/ko/identity/applications/applications-overview)를 참조하세요.
아래는 편집기에 표시되는 그대로 그룹화된 모든 설정에 대한 필드별 참조입니다.

<Note>
  대부분의 서비스에는 일반적으로 ACS URL, Service Provider Entity ID 및 매핑 등
  몇 가지 설정만 필요합니다. 기본값은 일반적인 서비스 공급자와 작동하도록
  선택되었으므로, 나머지는 서비스 문서에서 요구하는 경우에만 변경하세요.
</Note>

## Protocol details: Iru가 서비스 공급자에게 제공하는 것

애플리케이션의 **Protocol details**를 열어 서비스 공급자가 Iru를 신뢰하는 데 필요한
값을 복사하세요. 이 값은 Iru가 생성합니다.

| 세부 정보 | 설명 |
| - | - |
| **Metadata URL** | 이 앱에 대한 Iru의 SAML 설정을 설명하는 단일 문서. 많은 서비스가 이 URL로 모든 것을 구성하며, 메타데이터 파일을 보거나 다운로드할 수도 있습니다. |
| **IdP Entity ID** | 이 앱의 ID 공급자로서 Iru의 식별자. |
| **Single Sign On Service** | 서비스 공급자가 인증 요청을 보내는 URL(그리고 IdP 시작 로그인이 시작되는 곳). |
| **IdP Signing Certificate** | 서비스가 응답이 실제로 Iru에서 왔는지 확인하는 데 사용하는 인증서. 주체, 만료일 및 지문이 표시되며 복사하거나 다운로드할 수 있습니다. |

<Tip>
  서비스가 메타데이터를 가져올 수 있다면 **Metadata URL**을 지정하거나 다운로드한
  파일을 업로드하세요. 엔터티 ID, 로그인 URL 및 서명 인증서가 함께 포함되어 있어
  수동으로 입력할 내용이 줄어듭니다.
</Tip>

## Provider details: 서비스에 대해 Iru에 알려주는 것

| 설정 | 동작 |
| - | - |
| **ACS URL** | Iru가 SAML 응답을 전송하는 대상인 Assertion Consumer Service URL. 필수이며 유효한 `https` URL이어야 합니다. |
| **Service Provider Entity ID** | 서비스 공급자 자체의 식별자. Iru는 이를 기본 대상(audience)으로 사용하고 (선택적으로) 요청 발급자를 검증하는 데 사용합니다. |
| **Unsolicited authentication** | 서비스가 **IdP 시작** 로그인(사용자가 Iru에서 시작)을 지원하는지 여부. 서비스가 요청하지 않은 응답을 수락하면 **Supported**를, 그렇지 않으면 **Unsupported**를 설정합니다. |
| **Alternative authentication URL** | 요청되지 않은 인증이 **Unsupported**일 때 표시됩니다. 서비스가 직접 로그인을 시작할 수 있도록(서비스 공급자 시작) Iru가 사용자를 보내는 URL. |

<AccordionGroup>
  <Accordion title="Request: Iru가 인증 요청을 처리하는 방식" icon="inbox">
    이 설정은 서비스 공급자가 로그인을 시작하기 위해 보내는 **AuthnRequest**를
    관리합니다.

    ### 발급자 검증

    Iru가 수신 요청의 **Issuer**를 얼마나 엄격하게 검사하는지 설정합니다.

    | 옵션 | 동작 |
    | - | - |
    | **Must match Service Provider Entity ID** | 요청의 발급자가 위에서 입력한 Service Provider Entity ID와 같아야 합니다. |
    | **Must match custom value** | 발급자가 지정한 **Custom value**와 같아야 합니다(서비스의 발급자가 엔터티 ID와 다를 때 사용). |
    | **Ignore** | 발급자를 검증하지 않습니다. |

    ### 인증 요청 제한

    **요청에 서명이 필요한지**와 Iru가 응답하는 **ACS URL**을 제어합니다. "Follow"는
    요청의 ACS URL을 사용하고, "pinned"는 항상 **Provider details**에 구성된 ACS URL을
    사용합니다.

    | 옵션 | 요청 서명 필요 여부 | 응답 전송 대상 |
    | - | - | - |
    | **Any request and follow** | 아니요 | 요청의 ACS URL |
    | **Any request and pinned** | 아니요 | 구성된 ACS URL |
    | **Signed request and follow** | 예 | 요청의 ACS URL |
    | **Signed request and pinned** | 예 | 구성된 ACS URL |

    <Warning>
      **Pinned**가 더 안전한 선택입니다. 요청에 제공된 ACS URL을 무시하므로 변조된
      요청이 응답을 다른 곳으로 리디렉션할 수 없습니다. 서비스가 요청 서명을 지원하는
      경우 **Signed request and pinned**를 선호하세요.
    </Warning>

    **Signed request** 옵션을 선택하면 Iru가 해당 서명을 검증하는 방식도 설정합니다.

    | 설정 | 동작 |
    | - | - |
    | **Allowed signing algorithms** | Iru가 수락할 요청 서명 알고리즘: `RSA-SHA1`, `RSA-SHA256`, `RSA-SHA384`, `RSA-SHA512` 중 선택. 서비스가 사용하는 것을 선택하고, 필요하지 않다면 `RSA-SHA1`은 피하세요. |
    | **Allowed digest algorithms** | Iru가 수락할 요청 다이제스트 알고리즘: `SHA1`, `SHA256`, `SHA384`, `SHA512` 중 선택. |
    | **Signing Certificate** | Iru가 서비스의 서명된 요청을 검증하는 데 사용하는 인증서. 서비스 공급자의 요청 서명 인증서를 업로드하세요. |
  </Accordion>

  <Accordion title="Response: Iru가 어설션을 구성하고 전송하는 방식" icon="paper-plane">
    ### 전송 및 식별자

    | 설정 | 동작 |
    | - | - |
    | **HTTP Method** | SAML 응답 전송 방식: **HTTP-POST**(자동 제출 양식, 일반적인 선택) 또는 **HTTP-REDIRECT**. |
    | **IdP Entity ID** | Iru가 응답에서 선언하는 발급자. **Use default**(Protocol details에 표시됨)로 두거나, **Specify custom**을 선택하여 다른 **Custom IdP Entity ID**를 선언합니다. |
    | **Audience** | 어설션의 대상. **Use default**는 Service Provider Entity ID를 전송하며, **Specify custom**을 선택하면 다른 **Custom Audience**를 전송합니다. |
    | **Recipient** | 어설션에 선언되는 수신자. **Use default**는 ACS URL(대상)을 사용하며, **Specify custom**을 선택하면 다른 **Custom Recipient**를 전송합니다. |
    | **Fallback relay value** | 서비스가 RelayState를 제공하지 않을 때 Iru가 사용하는 값으로, 일반적으로 사용자가 앱에서 도착해야 하는 위치입니다. |
    | **Error action** | 로그인을 완료할 수 없을 때의 동작: **Iru**는 Iru 오류 페이지를 표시하고, **Protocol**은 서비스 공급자가 처리하도록 오류를 반환합니다. |

    ### 서명

    | 설정 | 동작 |
    | - | - |
    | **Signing method** | Iru가 서명하는 메시지 부분: **Response**, **Assertion** 또는 **Both - Response and Assertion**. 서비스가 요구하는 것과 일치시키세요. |
    | **Signing algorithm** | Iru가 서명하는 데 사용하는 서명 알고리즘: `RSA-SHA1`, `RSA-SHA256`, `RSA-SHA384` 또는 `RSA-SHA512`. 대부분의 서비스에는 `RSA-SHA256`이 적합합니다. |
    | **Digest algorithm** | 서명에 사용되는 다이제스트 알고리즘: `SHA1`, `SHA256`, `SHA384` 또는 `SHA512`. |

    Iru는 자체 **IdP Signing Certificate**(Protocol details에 표시된 인증서)로 서명하므로
    여기에서 업로드할 서명 인증서가 없습니다.

    ### 어설션 암호화

    | 설정 | 동작 |
    | - | - |
    | **Encrypt assertions** | **Unencrypted**(기본값) 또는 **Encrypted**. 서비스에서 암호화된 어설션을 요구하는 경우에만 켜세요. |
    | **Use the Request signing certificate** | 암호화할 때 별도의 인증서를 업로드하는 대신 서비스의 요청 서명 인증서를 암호화 인증서로 재사용합니다. (**Request** 섹션에 서명 인증서가 구성되어 있어야 합니다.) |
    | **Encryption Certificate** | 요청 서명 인증서를 재사용하지 않을 때 Iru가 어설션을 암호화하는 데 사용하는 서비스 공급자의 인증서. |
    | **Encryption algorithm** | 콘텐츠 암호화 알고리즘: `AES-128-GCM`, `AES-192-GCM`, `AES-256-GCM`, `AES-128-CBC`, `AES-192-CBC` 또는 `AES-256-CBC`. 서비스가 기대하는 것을 사용하세요(GCM 옵션이 좋은 기본값입니다). |
    | **Key transport algorithm** | 암호화 키 보호 방식: `RSA-OAEP` 또는 `RSA-PKCS1-v1.5`. |

    ### 고급

    | 설정 | 동작 |
    | - | - |
    | **Use namespace prefixes** | 응답에 명시적 XML 네임스페이스 접두사(`saml2p`, `saml2`, `ds`, `xenc`)를 추가합니다. 서비스의 SAML 파서가 접두사가 붙은 요소를 요구하는 경우 활성화하세요. |
  </Accordion>

  <Accordion title="Mapping: Iru가 전송하는 NameID 및 속성" icon="table-list">
    애플리케이션의 **매핑**을 열어 어설션의 ID를 제어합니다. 매핑은 **제목**(NameID)와
    추가 **속성**의 두 부분으로 구성됩니다.

    ### Subject (NameID)

    Subject는 로그인한 사용자의 기본 식별자입니다. 기본적으로 사용자의 `user.username`에서
    가져오며, 값을 가져오는 소스를 변경하고 **NameID 형식**을 선택할 수 있습니다.

    | NameID 형식 | 서비스가 기대하는 것… |
    | - | - |
    | **이메일** | 식별자로서의 이메일 주소. |
    | **Persistent** | 세션 간에 동일하게 유지되는 안정적이고 불투명한 식별자. |
    | **Transient** | 세션마다 변경될 수 있는 임시 식별자. |
    | **Unspecified** | 특정 형식 없음. |

    ### 속성

    서비스가 어설션에서 필요로 하는 각 속성을 추가합니다. 각 속성에 대해 다음을
    설정합니다.

    * **Name:** 서비스 공급자가 기대하는 속성 이름.
    * **값:** 값을 가져오는 프로필 속성 또는 표현식(예: `user.email` 또는 필드 조합).
    * **속성 이름 형식:** **Unspecified**, **URI** 또는 **Basic**.
    * **활성화** 여부.

    실시간 **미리 보기**는 생성될 어설션을 렌더링하므로 게시하기 전에 형태를 확인할
    수 있습니다.

    <Warning>
      `Subject`는 NameID로 예약되어 있어 사용자 지정 속성 이름으로 재사용할 수 없습니다.
    </Warning>
  </Accordion>

  <Accordion title="세션 관리" icon="clock">
    SAML 앱 어설션 또는 OIDC 토큰의 기본 세션 길이는 **60분**입니다. 일치하는 역할의
    세션 길이가 이 값을 재정의합니다. 역할에서 세션 길이를 **0**으로 설정하면 대신
    애플리케이션 기본값을 사용합니다.
    [역할 및 역할 번들](/ko/identity/applications/roles-and-bundles)을 참조하세요.

    | 설정 | 동작 |
    | - | - |
    | **Session Length Supported** | **Supported**는 아래 길이로 어설션의 `notOnOrAfter`(세션 만료)를 채우고, **Unsupported**는 이를 생략합니다. |
    | **Default session length (minutes)** | 어설션에 기록되는 애플리케이션 기본값. 기본값은 **60**입니다. 앱에서 **10**\~**2880**분 범위로 유효합니다. |
  </Accordion>
</AccordionGroup>

## 인증서 한눈에 보기

SAML 앱에는 최대 세 개의 인증서가 관련됩니다.

<AccordionGroup>
  <Accordion title="IdP 서명 인증서(Iru 자체)" icon="stamp">
    Iru는 **Protocol details**에 표시된 자체 인증서로 응답 및/또는 어설션에 서명합니다.
    서비스는 이를 사용하여 메시지가 Iru에서 왔고 변경되지 않았음을 확인합니다.
    업로드할 것이 없습니다.
  </Accordion>

  <Accordion title="요청 서명 인증서(서비스의 인증서)" icon="signature">
    Iru가 서비스가 보내는 **서명된 인증 요청**을 검증할 수 있도록 서비스 공급자의
    인증서를 업로드합니다. **Request** 섹션에서 구성하며, 서명된 요청을 요구하는
    경우에만 필요합니다.
  </Accordion>

  <Accordion title="암호화 인증서(서비스의 인증서)" icon="lock">
    Iru가 **어설션을 암호화**하는 데 사용하는 서비스 공급자의 인증서로, **Encrypt
    assertions**가 켜져 있을 때만 사용됩니다. 별도의 인증서를 업로드하는 대신 요청
    서명 인증서를 재사용할 수 있습니다.
  </Accordion>
</AccordionGroup>

## 게시, 할당 및 활성화

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

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

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

  <Step title="로그인 테스트">
    앱 대시보드에서 테스트 사용자로 로그인하여 경험을 확인하고, 매핑 **미리 보기**를
    사용하여 어설션을 확인합니다.
  </Step>
</Steps>

## 다음 단계

<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="OIDC 애플리케이션" icon="id-card" href="/ko/identity/applications/oidc-applications">
    SAML 대신 OpenID Connect를 사용하는 앱을 구성합니다.
  </Card>

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