pile·
보안·cloudflare-blogCloudflare Blog·

전부 아니면 전무에서 태스크 기반 OAuth 동의로

Cloudflare가 OAuth 인증에 선택적 스코프(optional scopes) 기능을 도입했다. 기존 "전부 또는 아무것도 아님" 방식 대신 사용자가 앱에 부여할 권한을 개별 스코프 단위로 선택·거부할 수 있게 되어, 최소 권한 원칙을 OAuth 동의 흐름에서 직접 구현할 수 있다. 6월 이후 수천 개의 타사 OAuth 앱이 생성됐고 100만 회 이상의 인증이 발생했다.

핵심 포인트
  • 개발자가 OAuth 클라이언트 등록 시 스코프를 필수(scopes)와 선택(optional_scopes)으로 분리해 선언 가능하다.
  • 사용자가 동의 화면에서 선택적 스코프를 개별로 거부할 수 있으며, 승인하지 않은 스코프는 발급 토큰에 포함되지 않는다.
  • 요청되지 않은 스코프는 동의 화면에 표시조차 되지 않아 권한 범위를 명확히 한다.
  • 기존 OAuth 클라이언트는 별도 설정 없이 현재 동작을 그대로 유지해 하위 호환성이 보장된다.
  • 인증 코드 교환 후 실제로 부여된 스코프 집합을 확인하는 로직이 앱 측에 필요하다.
상세 정리
  • 배경: 기존 OAuth 동의 모델은 전체 권한 승인 또는 앱 거부만 가능해, 일부 스코프만 주고 싶은 사용자에게 선택지가 없었다.
  • API 변경: oauth_clients 엔드포인트에 optional_scopes 배열을 추가해 클라이언트를 등록하면, 해당 스코프는 동의 화면에서 선택 해제 가능하도록 표시된다.
  • 동의 흐름: 사용자가 선택적 스코프를 거부해도 나머지 필수 스코프가 승인되면 인증이 진행되고, 부여된 스코프만 포함된 액세스 토큰이 발급된다.
  • 개발자 핸들링 의무: 인증 코드 교환 후 실제로 부여된 스코프 집합을 확인해야 한다. 선택적 스코프가 없을 경우의 degraded 모드를 앱이 처리해야 한다.
  • 미표시 최적화: 요청하지 않은 스코프는 동의 화면에 표시되지 않아 사용자 혼란을 줄인다.
  • curl 예시: optional_scopes에 workers-kv-storage.write, zone.read를 지정하면 사용자가 이 두 스코프를 개별로 거부할 수 있다.
  • 하위 호환: 기존 클라이언트는 새 필드를 사용하지 않아도 되며 현재 동작이 자동 유지된다.
  • 활용 사례: zone.read처럼 일부 사용자 워크플로우에서는 불필요한 권한을 optional로 분류해 최소 권한 원칙을 구현할 수 있다.
왜 읽나OAuth를 이용한 서드파티 앱 또는 플랫폼 API 권한 흐름을 설계하는 백엔드·보안 개발자에게 최소 권한 원칙을 실제 동의 UX에 적용하는 구체적인 방법을 제공한다.
cloudflare-blog
Cloudflare Blog 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 보안·gitlab-engGitLab Blog·

    Serena MCP 에이전트의 치명적 원격 코드 실행 취약점 분석

    GitLab 보안팀이 AI 코딩 에이전트 Serena(월 PyPI 다운로드 13.6만 건)에서 치명적 원격 코드 실행 취약점을 발견했다. Jinja2 비샌드박스 환경과 신뢰 모델의 미검사 경로가 결합해 개발자가 악의적 저장소를 열기만 해도 코드가 실행된다. serena-agent 1.7.0에서 SandboxedEnvironment 교체로 수정 완료됐다.

    요약 이어보기
    #mcp#security#rce+2