# 인증 (/ko/docs/requests/auth)

<strong>인증</strong> 탭은 요청이 자신이 누구인지 증명하는 방법을 정합니다. <strong>유형</strong>을 선택하고 필드를 채우면 요청을 보낼 때마다 Echolot이 자격 증명을 추가합니다. 폴더나
작업 공간에 인증을 한 번 설정해 두면 그 안의 모든 요청이 사용할 수 있습니다.

<Shot id="requests-http-auth-oauth" alt="Orders with OAuth 2의 인증 탭: 클라이언트 자격 증명 권한 부여 유형의 OAuth 2.0, 토큰 URL, 클라이언트 ID, 범위, 맨 아래의 토큰 받기가 있는 토큰 막대" />

## 자격 증명을 파일에 남기지 않기 [#keep-credentials-out-of-files]

모든 필드에 `{{variables}}`를 쓸 수 있습니다. 비밀번호, 토큰, 키는 키체인에 보관되는 [비밀 변수](/docs/workspaces/secrets)에 넣고 필드에는
`{{password}}`처럼 씁니다. 그러면 요청 파일에 비밀 값이 남지 않으므로 커밋해도 안전합니다.

자격 증명 필드에 값을 그대로 입력하면 그 아래에 경고가 나타납니다. <strong>작업 공간 파일에 일반 텍스트로 저장됩니다.</strong> <strong>키체인으로 이동</strong>을 클릭하면 Echolot이
그 값을 작업 공간의 비밀 변수로 저장하고 그 자리에 `{{name}}`을 씁니다.

Echolot이 추가하는 자격 증명은 요청 페이지에 표시되는 곳에서 가려집니다. <strong>자동 생성</strong> 헤더와 URL 막대 아래의 URL 미리보기가 해당합니다.

## 폴더와 작업 공간에서 상속 [#inherit-from-folders-and-the-workspace]

<strong>상속</strong>이 기본값입니다. 상속하는 요청은 위쪽 폴더 중 인증을 설정한 가장 가까운 폴더의 인증을 사용하고, 없으면 작업 공간의 인증을 사용합니다. 탭의 <strong>사용</strong> 아래에
`Folder “Orders”: Bearer Token`처럼 어느 인증이 적용되는지 표시되며, 그것을 여는 버튼 <strong>폴더 인증 편집…</strong> 또는 <strong>작업 공간 인증 편집…</strong>이 함께 있습니다.
위쪽 어디에도 인증이 없으면 요청은 인증 없이 보냅니다.

<Shot id="requests-http-auth-inherit" alt="상속으로 설정된 요청의 인증 탭: 사용 Folder “Orders”: Bearer Token과 폴더 인증 편집… 버튼" />

자체 인증이 있는 요청은 그 인증을 유지하며, <strong>인증</strong> 탭에는 작업 공간의 인증을 보여 주는 <strong>작업 공간 인증</strong> 행도 함께 표시됩니다. 이를 여는 버튼은
<strong>작업 공간 인증…</strong>이고, 작업 공간에 아직 인증이 없으면 <strong>작업 공간 인증 설정…</strong>입니다. <strong>작업 공간 인증…</strong>은 명령 팔레트(<kbd>⌘</kbd><kbd>K</kbd>)에도
있습니다.

여러 요청의 인증을 한꺼번에 설정하려면 다음과 같이 합니다.

1. 사이드바에서 폴더를 오른쪽 클릭하고 <strong>폴더 설정…</strong>을 선택합니다. 작업 공간은 요청의 <strong>인증</strong> 탭이나 명령 팔레트에서 <strong>작업 공간 인증…</strong>을 쓰거나,
   사이드바 하단의 작업 공간 전환기를 클릭하고 <strong>작업 공간 설정…</strong>을 선택합니다.
2. <strong>인증</strong> 탭을 열고 유형을 선택합니다. 폴더는 상속도 선택할 수 있지만 작업 공간은 그렇지 않습니다. 설정 아래에는 <strong>상속</strong>으로 설정된 요청 중 몇 개가 이 인증을
   사용하는지 표시됩니다.
3. OAuth 2.0은 그 자리에서 로그인합니다. 맨 아래의 토큰 막대는 요청에서와 같이 동작하며([OAuth 2.0](#oauth-20) 참고), 이 인증을 상속하는 모든 요청이 그
   토큰을 사용합니다. <strong>토큰 받기</strong>는 먼저 인증을 저장합니다. 막대는 인증이 저장된 뒤에야 폴더나 작업 공간 자체의 토큰을 보여 주므로, 위쪽 인증에 속한 토큰을
   표시하거나 삭제하는 일은 없습니다.
4. <strong>완료</strong>를 클릭합니다.

<Shot id="workspaces-folder-auth-oauth" alt="OAuth 2.0을 선택한 폴더 설정의 인증 탭: 토큰 URL과 클라이언트, 토큰 받기가 있는 토큰 막대, 이 인증을 상속하는 요청의 개수" />

Alpenglow 예제에서는 <strong>Orders</strong> 폴더가 `{{token}}`으로 <strong>Bearer 토큰</strong>을 설정하고, 모든 주문 요청이 이를 상속합니다. <strong>Auth › Sign in</strong>은
[캡처](/docs/requests/captures)로 응답에서 `{{token}}`을 채웁니다.

## 유형 선택 [#choose-a-type]

| 유형 | Echolot의 동작 |
| --- | --- |
| <strong>상속</strong> | 폴더 또는 작업 공간의 인증을 사용합니다. |
| <strong>인증 없음</strong> | 폴더가 인증을 설정했더라도 자격 증명을 보내지 않습니다. |
| <strong>Basic</strong> | 사용자 이름과 비밀번호로 `Authorization: Basic …`을 추가합니다. |
| <strong>Digest</strong> | 서버의 Digest 챌린지에 응답합니다. |
| <strong>Bearer 토큰</strong> | `Authorization: Bearer <token>`을 추가합니다. |
| <strong>API 키</strong> | 키를 헤더 또는 쿼리 매개변수로 추가합니다. |
| <strong>OAuth 1.0</strong> | 이미 가진 토큰으로 요청마다 OAuth 1.0 서명을 합니다. |
| <strong>OAuth 2.0</strong> | 액세스 토큰을 받아 Bearer 토큰으로, 또는 주소에 담아 보냅니다. |
| <strong>AWS 서명</strong> | 요청마다 AWS Signature Version 4로 서명합니다. |
| <strong>JWT Bearer</strong> | 보낼 때마다 새 JSON Web Token에 서명합니다. |
| <strong>Hawk</strong> | 요청마다 Hawk로 서명합니다. |
| <strong>Akamai EdgeGrid</strong> | 요청마다 EG1-HMAC-SHA256으로 서명합니다. |
| <strong>NTLM</strong> | 서버의 NTLM 챌린지에 응답합니다. |

<strong>헤더</strong> 탭에서 직접 추가한 `Authorization` 헤더는 <strong>인증</strong> 탭이 추가하는 헤더 대신 전송됩니다.

### Basic [#basic]

<strong>사용자 이름</strong>과 <strong>비밀번호</strong>를 입력합니다. Echolot은 이를 Base64로 인코딩해 `Authorization` 헤더로 보냅니다. Alpenglow의 <strong>Echo › Basic auth</strong>로
시험해 볼 수 있습니다.

### Digest [#digest]

<strong>사용자 이름</strong>과 <strong>비밀번호</strong>를 입력합니다. 첫 번째 전송은 자격 증명 없이 나가고, 서버가 Digest 챌린지와 함께 401로 응답하면 Echolot이 두 번째 요청으로 한 번
응답합니다. 두 요청 모두 교환에 홉으로 표시됩니다.

### Bearer 토큰 [#bearer-token]

<strong>토큰</strong>을 입력합니다. 보통 `{{token}}`입니다. <strong>접두사</strong>는 기본값이 `Bearer`이며, 다른 단어를 요구하는 서버에서는 바꾸고 토큰만 보내려면 비워 둡니다.

### API 키 [#api-key]

<strong>키</strong>(헤더 또는 매개변수 이름, 기본값은 `X-API-Key`)와 <strong>값</strong>을 입력한 다음 <strong>추가 위치</strong>에서 넣을 곳을 <strong>헤더</strong> 또는 <strong>쿼리</strong> 중에서 선택합니다.

### OAuth 2.0 [#oauth-20]

Echolot이 액세스 토큰을 받아 `Authorization: Bearer <token>`으로 추가합니다.

| 필드 | 의미 |
| --- | --- |
| <strong>권한 부여 유형</strong> | <strong>인가 코드</strong>, <strong>클라이언트 자격 증명</strong>, <strong>기기 코드</strong>, <strong>암호(레거시)</strong> 중 하나. |
| <strong>인증 URL</strong> | 로그인하는 곳(인가 코드). |
| <strong>기기 URL</strong> | 기기 코드를 받는 곳(기기 코드). |
| <strong>토큰 URL</strong> | 토큰을 받는 곳. |
| <strong>사용자 이름</strong>, <strong>비밀번호</strong> | 사용자 본인의 로그인 정보(암호). 비밀번호는 다른 자격 증명과 마찬가지로 키체인으로 옮길 수 있습니다. |
| <strong>클라이언트 ID</strong>, <strong>클라이언트 비밀</strong> | 클라이언트의 자격 증명. 공개 클라이언트는 비밀을 비워 둡니다. |
| <strong>범위</strong> | 요청할 범위를 공백으로 구분해 입력합니다. 예: `read write`. |
| <strong>대상(Audience)</strong> | 필요로 하는 서버용. |
| <strong>리디렉션 URI</strong> | 인가 코드용. 비워 두면 자동입니다. 사용 가능한 포트의 루프백 주소 `http://127.0.0.1:<port>/callback`을 씁니다. |
| <strong>PKCE(S256)</strong> | 인가 코드용. 기본으로 켜져 있습니다. |
| <strong>클라이언트 인증</strong> | 클라이언트 ID와 비밀을 토큰 URL에 전달하는 방법: <strong>HTTP Basic</strong>(기본값) 또는 <strong>본문에</strong>. |
| <strong>토큰 추가 위치</strong> | <strong>헤더</strong>(기본값) 또는 <strong>URL</strong>: 토큰을 쿼리 매개변수로 보내며, 이름은 <strong>매개변수</strong>에서 정합니다(기본값은 `access_token`). 주소는 로그와 기록에 남으므로 URL은 다른 방법을 받지 않는 API에만 사용하십시오. |
| <strong>헤더 접두사</strong> | 헤더에서 토큰 앞에 오는 단어. 기본값은 `Bearer`입니다. |

탭 맨 아래의 토큰 막대는 토큰이 있는지 보여 줍니다. <strong>토큰 받기</strong>를 클릭합니다.

- <strong>인가 코드</strong>는 인증 URL로 브라우저를 엽니다. 그곳에서 로그인하면 Echolot이 리디렉션을 받으며, 로그인을 마칠 때까지 <strong>브라우저에서 로그인을 완료하십시오…</strong>라고
  표시됩니다.
- <strong>기기 코드</strong>는 코드와 함께 <strong>다른 기기에서 로그인</strong>을 표시합니다. <strong>열기</strong>(페이지의 호스트 이름과 함께 표시됨)를 클릭하고 그곳에서 코드를 입력해 승인하면 되고,
  그동안 Echolot은 <strong>승인 대기 중…</strong>으로 기다립니다.
- <strong>클라이언트 자격 증명</strong>은 토큰 URL에 바로 요청합니다. 이 권한 부여 유형에서는 <strong>토큰 받기</strong>를 클릭하지 않아도 됩니다. 처음 보낼 때 알아서 토큰을 받습니다.
- <strong>암호(레거시)</strong>는 사용자 이름과 비밀번호를 토큰 URL로 보내며, 이것도 클릭이 필요 없습니다. 처음 보낼 때 토큰을 받습니다. 이를 요구하는 오래된 API에만
  사용하십시오. 비밀번호 자체가 Mac 밖으로 나가므로 이 권한 부여 유형은 지원 중단되었습니다. 서버가 인가 코드를 제공하면 인가 코드를 사용하십시오.

Echolot은 역시 지원 중단된 암시적 권한 부여를 제공하지 않습니다. 이를 아직 제공하는 대부분의 서버는 인가 코드도 제공하며, 가져온 암시적 권한 부여는 인가 코드가
됩니다. 서버가 이를 받아들이는지 확인하십시오.

토큰이 있으면 막대에 <strong>키체인의 액세스 토큰</strong>이 표시되고, 그 유형, 만료 시점, <strong>자동 갱신</strong> 여부, 범위가 함께 나타납니다. <strong>새로운 토큰 받기</strong>는 토큰을
교체하고, <strong>삭제</strong>는 토큰을 지웁니다.

토큰이 보관되고 사용되는 방식은 다음과 같습니다.

- 토큰은 키체인에 저장되며 작업 공간 파일에는 절대 저장되지 않습니다.
- 토큰은 인증을 설정한 요청, 폴더, 작업 공간에 속하고, 발급된 환경과 설정에도 속합니다. 환경을 바꾸거나 토큰 URL, 클라이언트 ID, 범위, 또는 토큰이 누구를 위한 것인지
  결정하는 다른 설정을 바꾸면 그에 맞는 별도의 토큰을 사용하거나 받으며, 다른 용도로 발급된 토큰은 절대 보내지 않습니다. 폴더에서 OAuth를 상속하는 요청은 그 폴더의
  토큰을 공유합니다. <strong>삭제</strong>는 모든 환경의 토큰을 지웁니다.
- 토큰이 만료되면 다음에 보낼 때 리프레시 토큰으로 갱신합니다. 클라이언트 자격 증명이나 암호 토큰은 다시 받습니다. 그렇지 않으면 <strong>이 요청에는 OAuth 토큰이
  필요합니다. 먼저 인증 탭에서 받으십시오.<strong> 또는 </strong>OAuth 토큰이 만료되었고 갱신할 수 없습니다. 인증 탭에서 새 토큰을 받으십시오.</strong>라는 메시지와 함께 보내기가
  중단됩니다.

직접 해 보려면 Alpenglow의 <strong>Auth › Orders with OAuth 2</strong>를 보내 보십시오. 데모 API에 클라이언트 자격 증명을 사용합니다.

#### 고급 [#advanced]

대부분의 서버에서는 이 항목이 필요 없으므로 <strong>고급</strong> 아래에 접혀 있습니다. 안의 항목 중 하나라도 설정되어 있으면 자동으로 펼쳐집니다.

<Shot id="requests-http-auth-oauth-advanced" alt="OAuth 2.0의 고급 섹션: 자동으로 갱신, 갱신 URL, 인증 요청·토큰 요청·갱신 요청 매개변수 표" />

- <strong>자동으로 갱신</strong>은 기본으로 켜져 있습니다. 끄면 만료된 토큰을 그대로 보내므로 API가 어떻게 응답하는지 확인할 수 있습니다. 클라이언트 자격 증명과 암호에서는
  첫 토큰을 여전히 받습니다.
- <strong>갱신 URL</strong>은 갱신 엔드포인트가 토큰 URL과 다른 서버용입니다. 비워 두면 토큰 URL을 사용합니다.
- <strong>인증 요청</strong>, <strong>토큰 요청</strong>, <strong>갱신 요청</strong>은 표준 필드 이상을 요구하는 서버를 위해 매개변수를 추가합니다. Google의 `access_type = offline`(리프레시
  토큰을 받기 위함), Azure AD의 `resource`, 테넌트, API 버전 같은 것입니다. 각 행에는 키, 값(변수를 쓸 수 있으므로 비밀 값을 키체인에 둘 수 있음)이 있으며,
  토큰 요청과 갱신 요청에는 그것이 들어갈 위치인 <strong>본문</strong>, <strong>헤더</strong>, <strong>URL</strong>도 있습니다. 표준 매개변수와 이름이 같은 매개변수는 표준 매개변수를 대체합니다.
  인증 요청의 매개변수는 로그인 주소에 들어가며, 기기 코드에서는 기기 인증 요청에 들어갑니다. `state`나 PKCE 챌린지를 대체하는 일은 없습니다.

### OAuth 1.0 [#oauth-10]

아직 OAuth 1.0을 쓰는 API를 위한 것입니다. NetSuite, Magento와 Adobe Commerce, X의 v1.1 엔드포인트, Jira와 Confluence Server의 애플리케이션 링크
등이 있습니다. Echolot은 이미 가진 토큰으로 요청마다 서명합니다. 토큰을 얻는 3-legged 흐름은 실행하지 않으며, Postman도 마찬가지입니다.

<Shot id="requests-http-auth-oauth1" alt="OAuth 1.0의 인증 탭: 서명 방식, 컨슈머 키와 비밀, 액세스 토큰과 토큰 비밀, 추가 위치 헤더" />

1. <strong>서명 방식</strong>을 선택합니다. <strong>HMAC-SHA1</strong>(가장 흔함), <strong>HMAC-SHA256</strong>, <strong>HMAC-SHA512</strong>, <strong>RSA-SHA1</strong>, <strong>RSA-SHA256</strong>, <strong>RSA-SHA512</strong>,
   <strong>PLAINTEXT</strong> 중에서 고릅니다.
2. <strong>컨슈머 키</strong>를 입력하고 이어서 <strong>컨슈머 비밀</strong>을 입력합니다. RSA는 <strong>개인 키</strong>를 입력하거나(붙여넣기, 또는 <strong>PEM 파일 선택…</strong>을 클릭하면 키가 바로 키체인에
   저장됨) 합니다.
3. <strong>액세스 토큰</strong>을 입력하고, RSA를 제외하면 <strong>토큰 비밀</strong>도 입력합니다. 아직 토큰이 없는 단계의 요청이라면 비워 둡니다.
4. <strong>추가 위치</strong>에서 <strong>헤더</strong>(`Authorization: OAuth …`, 기본값), <strong>URL</strong>, <strong>본문</strong> 중에서 선택합니다. <strong>본문</strong>은 양식 본문에 서명을 넣고, 본문이 없는
   요청에서는 주소에 넣습니다.
5. <strong>고급</strong>에는 <strong>영역(Realm)</strong>, <strong>콜백 URL</strong>, <strong>검증 코드</strong>(3-legged 흐름의 단계를 직접 진행할 때 사용), <strong>oauth_version="1.0" 추가</strong>(기본으로 켜짐),
   <strong>본문을 서명에 해시로 포함</strong>(양식이 아닌 본문을 위한 `oauth_body_hash`)이 있습니다.

요청은 보낼 때마다 새 타임스탬프와 nonce로, 메서드, 주소, 쿼리, 양식 본문의 필드를 대상으로 서명됩니다.

### AWS 서명 [#aws-signature]

<strong>액세스 키 ID</strong>, <strong>보안 액세스 키</strong>, <strong>리전</strong>(기본값 `us-east-1`), <strong>서비스</strong>(기본값 `execute-api`. `s3`, `lambda`, `es` 등)를 입력합니다. <strong>세션 토큰</strong>은
임시 자격 증명에만 필요합니다. 요청은 보낼 때 실제로 나가는 시간, 호스트, 본문을 기준으로 서명됩니다.

### JWT Bearer [#jwt-bearer]

Echolot이 보낼 때마다 새 토큰에 서명합니다.

1. <strong>알고리즘</strong>을 선택합니다. <strong>HS256</strong>, <strong>HS384</strong>, <strong>HS512</strong>(비밀 키를 쓰는 HMAC), <strong>RS256</strong>, <strong>RS384</strong>, <strong>RS512</strong>, <strong>PS256</strong>, <strong>PS384</strong>,
   <strong>PS512</strong>(RSA 개인 키), <strong>ES256</strong>, <strong>ES384</strong>(타원 곡선 개인 키) 중에서 고릅니다.
2. HMAC은 <strong>비밀 키</strong>를 입력합니다. 제공업체가 Base64로 준 경우에는 <strong>비밀 키가 Base64임</strong>을 체크합니다. 개인 키는 <strong>개인 키</strong>에 붙여넣거나 <strong>PEM 파일 선택…</strong>을
   클릭합니다. 키가 바로 키체인에 저장되고 필드는 이름으로 그것을 가리킵니다. 키는 PKCS #8, PKCS #1, SEC 1 PEM 형식이 가능합니다.
3. <strong>클레임</strong>을 JSON으로 씁니다. 변수를 넣을 수 있습니다: `{"sub": "{{userID}}"}`.
4. 서버가 필요로 하면 `kid` 같은 <strong>헤더 필드</strong>를 추가합니다. `alg`와 `typ`는 자동으로 설정됩니다.
5. <strong>“iat”(발급 시각) 추가</strong>는 기본으로 켜져 있습니다. <strong>만료 시간</strong>은 그 초 수만큼 뒤의 시각으로 `exp`를 추가합니다(기본값 300). 0이면 추가하지 않습니다.
   JSON에 직접 쓴 클레임은 쓴 그대로 유지됩니다.
6. <strong>추가 위치</strong>에서 <strong>헤더</strong>(<strong>접두사</strong> 포함, 기본값 `Bearer`) 또는 <strong>쿼리</strong>(<strong>매개변수</strong> 이름 포함, 기본값 `token`)를 선택합니다.

### Hawk [#hawk]

<strong>ID</strong>와 <strong>키</strong>를 입력하고 <strong>알고리즘</strong>(<strong>SHA-256</strong> 또는 <strong>SHA-1</strong>)을 선택하며, 서버가 필요로 하면 <strong>앱 데이터(ext)</strong>를 추가합니다. <strong>본문을 서명에 해시로 포함</strong>을
체크하면 페이로드 해시가 들어갑니다. 요청은 시간, nonce, 메서드, 경로, 호스트, 포트로 서명됩니다.

### Akamai EdgeGrid [#akamai-edgegrid]

<strong>클라이언트 토큰</strong>, <strong>클라이언트 비밀</strong>, <strong>액세스 토큰</strong>을 입력합니다. <strong>서명할 헤더</strong>는 쉼표로 구분한 목록이며 보통 비워 둡니다. <strong>서명할 본문 바이트</strong>는
POST 본문 중 해시할 범위를 제한합니다(기본값 131072).

### NTLM [#ntlm]

<strong>사용자 이름</strong>과 <strong>비밀번호</strong>를 입력하고, 서버가 필요로 하면 <strong>도메인</strong>과 <strong>워크스테이션</strong>도 입력합니다. Echolot은 NTLMv2를 사용합니다. 같은 연결에서
서버의 챌린지에 응답하며, 401 응답은 교환에 홉으로 남습니다.

NTLM은 요청이 아니라 연결을 인증하므로 HTTP/1.1이 필요합니다. HTTP 버전이 <strong>자동</strong>이면 Echolot은 NTLM 요청에 HTTP/1.1을 사용하고, <strong>HTTP/2</strong>나
<strong>HTTP/3</strong>을 선택했으면 보내기가 거부됩니다. [요청 설정](/docs/requests/settings#http-version)을 참고하십시오.

## 자격 증명은 출처에 머뭅니다 [#credentials-stay-with-their-origin]

리디렉션이 다른 출처(다른 스킴, 호스트, 포트)로 이어지면 Echolot은 자격 증명을 그곳으로 가져가지 않습니다. 다음을 제거합니다.

- `Authorization`, `Proxy-Authorization`, `Cookie` 헤더
- 흔히 쓰는 API 키 헤더(`X-API-Key`, `Api-Key`, `Apikey`, `X-Auth-Token`, `X-Access-Token`, `Private-Token`, `X-Functions-Key`), <strong>API 키</strong> 인증이
  사용하는 헤더, 값에 비밀 변수가 들어 있는 모든 헤더
- Digest, AWS 서명, OAuth 1.0, Hawk, EdgeGrid, NTLM 서명, 그리고 첫 호스트에 선택된 클라이언트 인증서

새 호스트의 인증서와 프록시는 그곳으로 가는 홉에 적용됩니다. [요청 설정](/docs/requests/settings#redirects)을 참고하십시오.

## 보호된 환경 [#protected-environments]

<strong>토큰 받기</strong>도 요청을 보냅니다. 윈도우의 환경이 보호된 환경이면 <strong>보내기</strong>처럼 먼저 확인합니다. [보호된 환경](/docs/workspaces/protected-environments)을
참고하십시오.
