Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🌐 Add Korean translation for docs/ko/docs/tutorial/security/index.md #5612

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
101 changes: 101 additions & 0 deletions docs/ko/docs/tutorial/security/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# 보안 - 도입부

보안, 인증 및 권한 부여를 처리하는 방법에는 여러 가지가 있습니다.

그리고 일반적으로 복잡하고 "어려운" 주제입니다.

많은 프레임워크와 시스템에서 보안과 인증을 처리하는 것만으로도 많은 노력과 코드가 필요합니다(많은 사례에서 작성된 모든 코드의 50% 이상이 될 수 있습니다).

**FastAPI**는 모든 보안 명세를 공부하지 않고도, **보안**을 표준 방식으로 쉽고 빠르게 다룰 수 있는 몇몇 툴들을 제공합니다.

그러나 먼저 소소한 개념들을 알아봅시다.

## 흥미가 없다면

이러한 용어에 관심이 없고 아이디와 비밀번호를 기반으로 한 인증으로 보안을 추가해야 하는 경우 *당장* 다음 장으로 넘어가도 좋습니다.

## OAuth2

OAuth2는 인증 및 권한 부여를 처리하는 여러 방법을 정의하는 명세입니다.

상당히 광범위한 명세이며 여러 복잡한 사용 사례를 다룹니다.

여기에는 "서드 파티"를 사용하여 인증하는 방법이 포함됩니다.

바로 그것이 "페이스북, 구글, 트위터, 깃허브에서 로그인"하는 모든 시스템 아래에서 사용하는 것입니다.

### OAuth 1

OAuth 1은 OAuth2와 매우 다르고 통신을 암호화하는 방법에 대한 사양을 직접 포함하기 때문에 더 복잡합니다.

요즘에는 인기가 없거나 쓰이지 않습니다.

OAuth2는 통신을 암호화하는 방법을 명세하지 않으며 애플리케이션이 HTTPS로 제공될 것으로 예상합니다.

!!! 팁
**배포**에 대한 섹션에서 Traefik을 사용하여 HTTPS를 무료로 설정하고 암호화하는 방법을 볼 수 있습니다.


## OpenID Connect

OpenID Connect는 **OAuth2**를 기반으로한 다른 명세입니다.

OAuth2에서 상대적으로 모호한 몇 가지 사항을 지정하여 OAuth2를 확장하여 상호 운용성을 높입니다.

예를 들어, 구글 로그인은 OpenID Connect를 사용합니다(OAuth2를 아래에 두고 사용합니다).

그러나 페이스북은 OpenID Connect를 사용하지 않습니다. OAuth2를 기반으로 자신들이 개조한 것을 사용합니다.

### OpenID (not "OpenID Connect")

"OpenID" 명세도 있었습니다. **OpenID Connect**와 같은 문제를 해결하려고 했지만 OAuth2 기반이 아니었습니다.

그래서 그것은 완전히 추가적인 시스템입니다.

요즘에는 인기가 없거나 쓰이지 않습니다.

## OpenAPI

OpenAPI(이전에는 Swagger로 알려졌던)는 API(현재는 리눅스 재단의 일부) 구축을 위한 개방형 사양입니다.

**FastAPI**는 **OpenAPI**를 기반으로 합니다.

이것이 여러 자동 대화형 문서 인터페이스, 코드 생성 등을 가능하게 하는 이유입니다.

OpenAPI에는 다중 보안 "체계"를 정의하는 방법이 있습니다.

이를 사용하면 이러한 대화형 문서 시스템을 포함하여 이러한 모든 표준 기반 도구를 활용할 수 있습니다.

OpenAPI는 다음의 보안 체계를 정의합니다:

* `apiKey`: 다음에서 올 수 있는 애플리케이션 구별 키:
* 쿼리 매개변수.
* 헤더.
* 쿠키.
* `http`: 다음을 포함한 표준 HTTP 인증 시스템:
* `bearer`: `Bearer`의 값과 `Authorization`의 헤더는 토큰에 더해집니다. 이것은 OAuth2에서 상속됩니다.
* HTTP 기본 인증.
* HTTP 다이제스트 등.
* `oauth2`: 보안을 처리하는 모든 OAuth2 방법("흐름"이라고 합니다).
* 이러한 흐름 중 일부는 OAuth 2.0 인증 공급자(예: 구글, 페이스북, 트위터, 깃허브 등)를 구축하는 데 적합합니다:
* `implicit`
* `clientCredentials`
* `authorizationCode`
* 그러나 동일한 애플리케이션에서 직접적으로 인증을 처리하는 데 완벽하게 사용할 수 있는 하나의 특정 "흐름"이 있습니다:
* `password`: 다음 장에서는 이에 대한 예를 다룰 것입니다.
* `openIdConnect`: OAuth2 인증 데이터를 자동으로 검색하는 방법을 정의하는 방법이 있습니다.
* 이 자동 검색은 OpenID Connect 명세에 정의되어 있습니다.


!!! 팁
구글, 페이스북, 트위터, 깃허브 등과 같은 다른 인증/권한 부여 공급자를 통합하는 것도 가능하고 비교적 쉽습니다.

가장 복잡한 문제는 이와 같은 인증/권한 부여 공급자를 구축하는 것이지만 **FastAPI**는 무거운 작업을 대신 수행하면서 쉽게 수행할 수 있는 도구를 제공합니다.

## **FastAPI** 기능

FastAPI는 이러한 보안 메커니즘의 사용을 단순화하는 `fastapi.security' 모듈에서 이러한 보안 체계 각각에 대한 몇 가지 도구를 제공합니다.

다음 장에서는 **FastAPI**에서 제공하는 도구를 사용하여 API에 보안을 추가하는 방법을 볼 것입니다.

또한 대화형 문서 시스템에 자동으로 통합되는 방법도 확인할 수 있습니다.