【问题标题】:How to access own API in native application using Google OAuth 2.0 for authentication?如何使用 Google OAuth 2.0 在本机应用程序中访问自己的 API 进行身份验证?
【发布时间】:2017-04-12 11:29:32
【问题描述】:
我们有一个使用 OAuth2 Google 登录系统的应用,我们希望在初始注册期间将登录我们应用的用户的数据存储在我们的后端。
这是我们设置它的方式:
- 用户使用 Google 登录使用应用程序登录
- 我们得到一个 ID Token 并将其发送到服务器
- 在服务器上,我们使用 Google 库验证此令牌是否有效,并保存我们从验证中返回的信息
我们还需要用户在通过身份验证后能够在后端更新/插入数据。
初次注册后,我们该怎么做?
每次客户端调用我们后端的 API 时,我们是否都会将 ID 令牌从客户端发送到服务器?这种情况下如何处理过期的token?
【问题讨论】:
标签:
php
android
oauth
oauth-2.0
google-oauth
【解决方案1】:
如果您想让您的 API 成为您系统中的一等公民,并让它需要专门颁发给它的访问令牌,而不是接受颁发给您的客户端的 Google 身份验证相关令牌应用程序然后您需要有一个专门为您的 API 颁发令牌的授权服务器。
此授权服务器仍然可以将用户身份验证委托给 Google,但在验证用户身份后,它会发出 API 特定的访问令牌,以更好地满足您的要求,例如,包括您的 API 用于执行授权决策的特定范围.
有关此场景的更完整描述,您可以查看 Auth0 Mobile + API architecture scenario。
在这种情况下,您有一个与 API(“资源服务器”)对话的移动应用程序(“客户端”)。该应用程序将使用 OpenID Connect 和授权代码授予,使用 Proof Key for Code Exchange (PKCE) 对用户进行身份验证。
这些信息是 Auth0 特定的,您确实可以将 Auth0 用作您自己的 API 的授权服务器,同时仍然保持 Google 身份验证支持,但是,大部分理论也适用于任何符合 OAuth 2.0 的提供商。
披露:我是一名 Auth0 工程师。