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 |
|
|
|
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호출이 정상 동작하는지 (branchfeature-keycloak-google-redirect-uri-policy의 Claims To Verify 항목)
- Keycloak Google IdP 브로커링에서 실제로 Authorized JavaScript origins를 비운 상태로 등록해도
메모 / Notes
- 이 자료로 branch D6의 Evidence Strength를
UNSUPPORTED_DECISION→official-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 버킷 구분)와 무관하여 인용하지 않음.
Related / 관련
- 같은 주제 다른 official-doc: raw/official-docs/google-oauth2-redirect-uri-validation-official — 동일 Google OAuth 2.0 client의 redirect URI 검증 규칙(D1~D4, D8 근거)
- 같은 주제 다른 official-doc: raw/official-docs/keycloak-google-idp-setup — Keycloak Admin Console 측 Google IdP 등록 절차(D1, D5 근거)
- 이 자료를 인용한 wiki 요약: (미작성)