Files
llm-wiki/raw/official-docs/google-oauth2-client-application-types-official.md

10 KiB

title, source_type, url, archive_url, status, confidence, related_branches, related_projects, tags, created, last_reviewed
title source_type url archive_url status confidence related_branches related_projects tags created last_reviewed
official-doc / Google OAuth 2.0 — Manage OAuth Clients (Application Types & Private/Public Client Classification) official-doc https://support.google.com/cloud/answer/15549257?hl=en raw high
feature-keycloak-google-redirect-uri-policy
keycloak-patterns
keycloak-patterns
p3b-single-ec2-google
idp-brokering
google-oauth
client-application-type
2026-07-16 2026-07-16

Google OAuth 2.0 — Manage OAuth Clients (Application Types & Private/Public Client Classification)

Layer: raw/official-docs/ — Google Cloud Platform Console Help 공식 문서 발췌. P3B (단일 EC2 + Google IdP brokering)의 Google OAuth 2.0 client Application-type 분류(Web application vs Native[Android/iOS/Desktop/UWP/Chrome Extension] vs TV & Limited-Input) + Private/Public Client 정의의 1차 근거.

Parent / 활용 branch (필수)

Branch 이 자료가 정당화하는 결정
raw/branch-notes/feature-keycloak-google-redirect-uri-policy D6 — Google OAuth 2.0 client Application-type 분류(Web application vs Native[Android/iOS/Desktop/UWP] vs TV & Limited-Input) 근거 + "Private Clients는 서버에서 안전하게 client_secret을 저장할 수 있다"는 정의로, Keycloak처럼 server-to-server로 /token을 호출하는 confidential client가 Web application 타입에 대응한다는 결정을 뒷받침

출처 / Source

  • 원본 URL: https://support.google.com/cloud/answer/15549257?hl=en
  • 아카이브 URL: (미수집)
  • 저자 / 조직: Google — Google Cloud Platform Console Help
  • 발행일: rolling docs (Help Center article, 명시적 발행일 표기 없음)
  • 마지막 확인일: 2026-07-16

왜 저장했는지 / Why archived

branch feature-keycloak-google-redirect-uri-policy의 D6("Google OAuth client Application type = Web application; Keycloak이 server-to-server /token 호출 → JavaScript origin 비워둠")는 기존에 UNSUPPORTED_DECISION이었다(cited raw에 Application type 정의 및 client 분류 verbatim 부재). 본 자료는 Google 공식 Console Help 문서에서 Application type 목록(Web / Native[Android·iOS·Desktop·UWP·Chrome Extension] / TV & Limited-Input)과 Private/Public Client 정의, Authorized JavaScript origins 조건부 요구사항을 verbatim으로 제공하여 D6의 근거 공백을 메운다.

핵심 인용 / Key quotes (verbatim, 5문장)

[§Client ID and Client Secret] "Private Clients: These apps, like web server applications, can securely store the client secret because they run on servers you control."

[§Client ID and Client Secret] "Public Clients: Native apps or JavaScript-based apps fall under this category. They cannot securely store secrets, as they reside on user devices and as such do not use client secrets."

[§Application types → Web Applications] "A web application is accessed by web browsers over a network."

[§Application types → Native Applications] "Native Applications (Android, iOS, Desktop, UWP, Chrome Extensions, TV and Limited Input)"

[§Application types → Web Applications → Authorized JavaScript origins] "Applications that use client-side JavaScript to access Google APIs must specify authorized JavaScript origins. The origins identify the domains from which your application can send API requests."

Claims Extracted / 추출된 주장

Claim ID Claim (이 자료가 직접 말하는 것) Evidence quote Strength Applies to Does not prove
GOOGLE-CLIENTTYPE-C1 Private Clients(웹 서버 애플리케이션 등)는 서버가 사용자 통제 하에 있어 client secret을 안전하게 저장할 수 있다 [§Client ID and Client Secret] "Private Clients: These apps, like web server applications, can securely store the client secret because they run on servers you control." official-vendor-doc 서버 측(confidential) OAuth client 일반 — Keycloak처럼 server-to-server 로 Google과 통신하는 client 포함 이 문장 단독으로 Google Console의 "Web application" Application-type이 자동으로 "Private Client"로 분류된다고 명시하지는 않음 — "web server applications"라는 예시어와 C3("A web application is accessed by web browsers over a network")를 결합한 구조적 추론
GOOGLE-CLIENTTYPE-C2 Public Clients는 native app 또는 JavaScript 기반 app이며, 사용자 기기에 상주하므로 secret을 안전하게 저장할 수 없고 client secret을 사용하지 않는다 [§Client ID and Client Secret] "Public Clients: Native apps or JavaScript-based apps fall under this category. They cannot securely store secrets, as they reside on user devices and as such do not use client secrets." official-vendor-doc Native app / SPA(JavaScript 기반) client 분류의 대조 사례 Console의 Application-type 목록(Android/iOS/Desktop/UWP/Chrome Extension/TV & Limited-input) 각각이 개별적으로 "Public"이라고 재확인하지는 않음 — "Native apps"라는 총칭과 C4의 Native Applications 목록을 결합한 추론
GOOGLE-CLIENTTYPE-C3 "Web application" Application type은 "웹 브라우저를 통해 네트워크로 접근되는" 애플리케이션으로 정의된다 [§Application types → Web Applications] "A web application is accessed by web browsers over a network." official-vendor-doc Google OAuth 2.0 client 등록 시 Application type 선택지 중 "Web application" 버킷의 정의 이 문장 자체는 client secret 저장 방식이나 confidential/public 분류를 직접 언급하지 않음(C1과 결합해야 함)
GOOGLE-CLIENTTYPE-C4 Native Applications 버킷은 Android, iOS, Desktop, UWP, Chrome Extensions, TV and Limited Input을 포괄한다 [§Application types → Native Applications] "Native Applications (Android, iOS, Desktop, UWP, Chrome Extensions, TV and Limited Input)" official-vendor-doc Google Cloud Console OAuth client 생성 시 Web application 이외의 Application-type 버킷 열거 이 헤딩 자체가 "Public Client"라고 재확인하지는 않음(C2와 결합 필요) — TV & Limited-input이 별도 sub-flow(OAuth 2.0 TV and limited-input device flow)로 분리 운영된다는 세부는 본 인용 범위 밖
GOOGLE-CLIENTTYPE-C5 client-side JavaScript로 Google API에 접근하는 애플리케이션은 authorized JavaScript origins를 지정해야 한다 [§Application types → Web Applications → Authorized JavaScript origins] "Applications that use client-side JavaScript to access Google APIs must specify authorized JavaScript origins. The origins identify the domains from which your application can send API requests." official-vendor-doc Web application 타입 하위의 조건부 요구사항 — client-side JS 사용 여부가 트리거 이 문장은 "client-side JS를 쓰지 않으면 이 필드를 비워도 된다"는 역명제를 명시하지 않음 — 긍정 조건("쓰면 반드시 지정")만 서술. Keycloak의 server-to-server 시나리오(JS 미사용)에서 필드를 비우는 것이 안전하다는 결론은 이 인용의 직접 증명 범위 밖(역논리 추론)

Usage Boundaries / 적용 경계

  • 이 자료가 직접 증명하는 것:
    • GOOGLE-CLIENTTYPE-C1~C2: Google OAuth client는 Private(서버 보관 secret) vs Public(secret 미사용) 두 클래스로 분류되며, 각 클래스의 정의와 대표 예시(web server apps vs native/JS apps)
    • GOOGLE-CLIENTTYPE-C3~C4: Google Cloud Console에서 선택 가능한 Application type 버킷 목록 — Web application(브라우저로 접근) vs Native Applications(Android/iOS/Desktop/UWP/Chrome Extension/TV & Limited-input)
    • GOOGLE-CLIENTTYPE-C5: Authorized JavaScript origins가 필요한 조건(client-side JavaScript로 Google API 접근 시)
  • 이 자료가 증명하지 않는 것:
    • "Web application" Application type이 자동으로 "Private Client"로 분류된다는 단일 명시 문장은 없음 — C1("web server applications")과 C3("accessed by web browsers over a network")를 결합한 구조적 추론
    • client-side JavaScript를 쓰지 않는 Web application(예: Keycloak의 server-to-server brokering)에서 Authorized JavaScript origins를 비워도 되는지의 역명제는 verbatim으로 확인되지 않음 — 긍정 조건만 서술됨
    • TV & Limited-input 이 Native Applications 헤딩 하위에서 구체적으로 별도 OAuth flow("TV and limited-input device flow")를 쓴다는 것은 본 5개 인용 범위 밖(문서 본문 별도 섹션에 존재 — 원문 확인됨, 단 미인용)
    • Keycloak이 이 문서에서 다뤄지는 것은 아님 — Keycloak을 confidential/server-side client로 다루는 것은 프로젝트 측 적용 해석
  • 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
    • Keycloak Google IdP 브로커링에서 실제로 Authorized JavaScript origins를 비운 상태로 등록해도 /token 호출이 정상 동작하는지 (branch feature-keycloak-google-redirect-uri-policy의 Claims To Verify 항목)

메모 / Notes

  • 이 자료로 branch D6의 Evidence Strength를 UNSUPPORTED_DECISIONofficial-vendor-doc(Application type 분류 및 Private Client 정의 부분)로 격상할 수 있는 근거가 마련됨. 단 "JavaScript origin 비움"의 역명제 부분은 여전히 근거 공백 — branch 측 Decision Evidence Map 갱신은 branch-note 작업자 몫(본 raw 문서는 인용·claim만 제공).
  • 원문에는 Android/iOS/UWP/Chrome Extension/TV/Desktop 각각의 세부 등록 필드(SHA1 fingerprint, Bundle ID, Store ID 등)도 있으나 본 branch(D6)의 결정 범위(Web application vs Native 버킷 구분)와 무관하여 인용하지 않음.