31. Security Intro
1. Security Intro
- 보안, 인증 및 권한 부여를 처리하는 방법에는 여러 가지가 있다.
- 많은 프레임워크와 시스템에서 보안과 인증을 처리하는 것만으로도 많은 노력과 코드가 필요하다.
- 하지만 FastAPI는 모든 보안 사양을 연구하고 배울 필요 없이 표준 방식으로 쉽고 빠르게 처리하는 데 도움이 되는 여러 도구를 제공한다.
2. OAuth2
- OAuth2는 인증 및 권한 부여를 처리하는 여러 방법을 정의하는 사양이다.
- 상당히 광범위한 사양이며 여러 복잡한 사용 사례를 다룬다.
- 여기에는 "third party"인 Facebook, Google, Twitter, GitHub으로 로그인하여 인증하는 방법이 있다.
3. OpenID Connect
- OpenID Connect는 OAuth2를 기반으로 하는 또 다른 사양이다.
- OAuth2에서 상대적으로 모호한 몇 가지 사항을 지정하여 상호 운용성을 높인다.
- Google 로그인은 OpenID Connect를 사용하나, Facebook 로그인은 OpenID Connect를 지원하지 않는다.
4. OpenAPI
- OpenAPI는 API 구축을 위한 개방형 사양이다.
- FastAPI는 OpenAPI를 기반으로 한다.
- 그렇기 때문에 여러 자동 대화형 문서 인터페이스, 코드 생성 등이 가능하다.
- OpenAPI에는 여러 보안 "schemes"를 정의하는 방법이 있다.
- 이를 사용하면 이러한 대화형 문서 시스템을 포함하여 모든 표준 기반 도구를 활용할 수 있다.
- OpenAPI는 다음과 같은 보안 schemes를 정의한다.
1] apiKey
- query 매개변수, header, cookie에서 가져올 수 있는 애플리케이션 특정 키이다.
2] http
Bearer
값에 토큰을 더한 headerAuthorization
인bearer
, HTTP Basic authentication, HTTP Digest 등을 포함하는 표준 HTTP 인증 시스템이다.
3] oauth2
- 보안을 처리하는 모든 OAuth2 방식이며, "flows"라고 한다.
implicit
,clientCredentials
,authorizationCode
는 Google, Facebook, Twitter, GitHub 등과 같은 OAuth2.0 인증 제공자를 구축하는 데 적합한 flows이다.password
는 동일한 애플리케이션에서 직접 인증을 처리하는 데 완벽하게 사용할 수 있는 flow이다.
4] openIdConnect
- OAuth2 인증 데이터를 자동으로 검색하는 방법을 정의하는 것이다.
- 이 자동 검색은 OpenID Connect 사양에 정의되어 있다.