Logo Logo
GitHub Designed by Logto

스코프란 무엇인가?

OAuth 2.0 OpenID Connect (OIDC) 프로토콜에서, **스코프 (Scope)**는 애플리케이션이 사용자의 리소스에 대한 접근을 제한하는 메커니즘입니다. 이는 애플리케이션이 사용자에게 요청하는 권한을 정의합니다.

스코프는 authorization server에 의해 정의된 문자열로 표현됩니다. 애플리케이션이 사용자의 리소스에 접근을 요청할 때, authorization request에서 필요한 스코프를 명시합니다. 이후 사용자는 authorization 과정에서 이러한 권한을 승인하거나 거부하도록 요청받습니다.

스코프를 사용하는 이유는 무엇인가?

  • 세분화된 access control: 스코프는 애플리케이션이 특정 작업을 수행하는 데 필요한 권한만 요청할 수 있게 하여 무단 접근의 위험을 줄입니다.
  • 사용자 동의: 스코프는 애플리케이션이 어떤 데이터를 접근하며 그 이유를 사용자가 이해할 수 있도록 도와줍니다.
  • 보안: 스코프는 애플리케이션이 자신의 접근 권한을 넘어서지 않도록 하여 사용자의 데이터 보안을 강화합니다.

스코프는 어떻게 작동하는가?

애플리케이션이 OAuth 2.0 / OIDC authorization 프로세스를 시작할 때, authorization request에 스코프 목록을 포함시킵니다. 그런 다음 authorization server는 사용자에게 요청된 스코프를 나열한 동의 화면을 제시합니다. 사용자는 각 스코프에 대한 접근을 승인하거나 거부할 수 있습니다. 이 프로세스는 일반적으로 사용자의 리소스에 대한 접근이 필요한 제삼자 애플리케이션에서 사용됩니다.

대안적으로, 애플리케이션이 authorization server에 의해 신뢰받는 경우, 사용자는 동의를 요청받지 않을 수 있으며, 자동 동의가 이루어져 모든 요청된 스코프가 승인됩니다.

스코프 정의

스코프는 일반적으로 API 제공자에 의해 정의됩니다. 이것들은 다음과 같습니다:

  • 표준 스코프: OAuth 2.0 사양에 의해 정의된, 여러 애플리케이션과 서비스에 의해 공유되는 일반적으로 사용되는 스코프. 예: openid, profile, email.
  • 커스텀 스코프: 애플리케이션 또는 서비스에 고유한 요구에 맞춘 구체적인 스코프. 예: read:orders, write:comments.

OIDC와 identity management에서 스코프는 어디에 사용될 수 있나?

스코프는 OIDC의 다양한 측면에서 사용할 수 있으며, 그 사용은 다음에 한정되지 않습니다:

  • 인증 (Authentication): 스코프는 인증 과정에서 특정 사용자 정보를 요청하는 데 사용될 수 있습니다. 예: profile, email.
  • authorization: 스코프는 특정 리소스에 대한 접근을 요청하거나 특정 작업을 수행하는 데 사용될 수 있습니다. 예: read:orders, write:comments.
  • 동의 (Consent): 스코프는 사용자에게 애플리케이션이 요청하는 권한을 알려주기 위해 동의 화면에서 제시됩니다.
  • 토큰 발급: 스코프는 애플리케이션에 부여된 권한을 나타내기 위해 토큰 응답에 포함됩니다.
  • 토큰 검증: 스코프는 애플리케이션이 보호된 리소스에 접근하기 위해 토큰을 제시할 때 접근 권한을 검증하는 데 사용될 수 있습니다.
  • 리소스 서버: 스코프는 리소스 서버가 애플리케이션에 부여된 권한에 기반하여 access control 정책을 시행하는 데 사용됩니다.
  • 사용자 프로필: 스코프는 기본적인 claim을 넘어서 추가 사용자 프로필 정보를 요청하는 데 사용될 수 있습니다.

모범 사례

  • 최소 스코프 요청: 애플리케이션이 작동하는 데 필요한 최소한의 스코프만 요청하세요. 이는 과도한 권한의 위험을 최소화하고 사용자 신뢰를 향상시킵니다.
  • 스코프 사용 설명: 각 스코프가 필요한 이유를 사용자에게 명확히 설명하세요. 투명성은 사용자 동의를 얻는 데 도움을 줍니다.
  • 표준 스코프 사용: 가능할 때 표준 스코프를 활용하여 호환성을 보장하고 복잡성을 줄이세요.

참고