如何使用适用于 Web 服务器应用程序的 Google OAuth 2.0 向 Google ID_Token 添加自定义声明
Posted
技术标签:
【中文标题】如何使用适用于 Web 服务器应用程序的 Google OAuth 2.0 向 Google ID_Token 添加自定义声明【英文标题】:How to add custom claims to Google ID_Token with Google OAuth 2.0 for Web Server Applications 【发布时间】:2020-11-17 18:23:09 【问题描述】:我们已经为 Web 服务器应用程序配置了 Google OAuth 2.0,如 https://developers.google.com/identity/protocols/oauth2/web-server#httprest 中所述。
得到了代码,
https://accounts.google.com/o/oauth2/v2/auth? 范围=https%3A//www.googleapis.com/auth/drive.metadata.readonly& access_type=离线& include_granted_scopes=true& response_type=代码& state=state_parameter_passthrough_value& redirect_uri=https%3A//oauth2.example.com/code& client_id=client_id。
使用 JWT,
POST /token HTTP/1.1 主机:oauth2.googleapis.com 内容类型:application/x-www-form-urlencoded
代码=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7& client_id=your_client_id& client_secret=your_client_secret& redirect_uri=https%3A//oauth2.example.com/code& grant_type=authorization_code
现在我解码的 id_token 看起来像,
"alg": "RS256",
"kid": "b63ee0be093d9bc312d958c9966d21f0c8f6bbbb",
"typ": "JWT"
.
"iss": "https://accounts.google.com",
"azp": "640523414127-4eaptj129qb79v33pm0il71r4f506ts9.apps.googleusercontent.com",
"aud": "640523414127-4eaptj129qb79v33pm0il71r4f506ts9.apps.googleusercontent.com",
"sub": "118185565008542236388",
"email": "mail_ID@gmail.com",
"email_verified": true,
"at_hash": "K_sS85PI2ptkOIrUoWcM7Q",
"iat": 1595931406,
"exp": 1595935006
.[Signature]
现在如何添加自定义声明,以便上述 id_token 包含我的新声明,例如,
“政策”:“读写”
最后解码后的 id_token 应该是这样的,
"alg": "RS256",
"kid": "b63ee0be093d9bc312d958c9966d21f0c8f6bbbb",
"typ": "JWT"
.
"iss": "https://accounts.google.com",
"azp": "640523414127-4eaptj129qb79v33pm0il71r4f506ts9.apps.googleusercontent.com",
"aud": "640523414127-4eaptj129qb79v33pm0il71r4f506ts9.apps.googleusercontent.com",
"sub": "118185565008542236388",
"email": "mail_ID@gmail.com",
"email_verified": true,
"at_hash": "K_sS85PI2ptkOIrUoWcM7Q",
"iat": 1595931406,
"exp": 1595935006,
**"policy": "readWrite"**
.[Signature]
【问题讨论】:
【参考方案1】:也许会有所帮助:
为用户配置自定义声明 (...) 开始之前 安装 管理 SDK。 (...)
admin.auth().setCustomUserClaims(uid, admin: true)
https://cloud.google.com/identity-platform/docs/how-to-configure-custom-claims
【讨论】:
很遗憾,身份平台不是身份。以上是关于如何使用适用于 Web 服务器应用程序的 Google OAuth 2.0 向 Google ID_Token 添加自定义声明的主要内容,如果未能解决你的问题,请参考以下文章
适用于 iOS 消费的 Web 服务(在 Amazon 上)安全性
将工作 Web 应用程序转变为适用于 Android 的本机 Ionic 应用程序时出现 CORS 问题