diff --git a/docs/ko/docs/tutorial/security/index.md b/docs/ko/docs/tutorial/security/index.md new file mode 100644 index 000000000..5477a3947 --- /dev/null +++ b/docs/ko/docs/tutorial/security/index.md @@ -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에 보안을 추가하는 방법을 볼 것입니다. + +또한 대화형 문서 시스템에 자동으로 통합되는 방법도 확인할 수 있습니다.