微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 League Oath 2 集成来解密基于文本的 Google JWT idToken,以便使用 Android / IOS 应用程序进行 Google 登录?

如何解决如何使用 League Oath 2 集成来解密基于文本的 Google JWT idToken,以便使用 Android / IOS 应用程序进行 Google 登录?

我在大约一年前开发的基于 PHP 的 Web 应用程序上开发了一个登录过程,该应用程序使用 Google 登录来允许用户访问系统。我使用了 PHP 联盟的 Oauth 2 包,或多或少遵循 this example。本质上,我将我的网络用户发送到 Google "Choose an Account" Page,在那里用户选择他们的帐户并被定向回我的应用程序上的 URL,在 URL 中设置了值“code”,我可以使用它来获取访问令牌并将用户与我的应用程序中的用户匹配,如下所示:

<?PHP

$provider = new League\OAuth2\Client\Provider\Google([
    'clientId' => $clientId,'clientSecret' => $clientSecret,'redirectUri' => $redirectUri
]);

$token = $provider->getAccesstoken('authorization_code',[
    'code' => $_GET['code']
]);

// Owner details contains info to map google user to user in my system
$ownerDetails = $provider->getResourceOwner($token)->toArray();

但是,现在我们正朝着开放我们的应用程序本身作为 API 的方向迈进。我团队中的另一位开发人员开发了使用 REST/CRUD API 端点的 Android/IOS 应用程序,这些端点现在可以在我的应用程序上使用并使用 Google Sign In 登录。 Android / IOS 应用程序已开发为使用 these instructions 与 Google 登录集成。

Android / IOS 集成不会生成与我们用于在上面基于 Web 的集成中查找 Accesstoken 相同的 $code 值,而是生成访问令牌本身,它也恰好包含我需要的所有信息在上面的 $owneDetails 中进行身份验证。

它遵循以下格式:

Object {
 "accesstoken": "ya29 ... truncated","idToken": "eyJhbGciOiJSUzI1 ... truncated","refreshToken": "1//01FwliX ... truncated","type": "success","user": Object {
  "email": "example@gmail.com","familyName": "Doe","givenname": "John","id": "123","name": "John Doe","photoUrl": "https://lh3.googleusercontent.com/a-/example",},}

JWT idToken 值应该是登录用户详细信息的加密版本,我希望能够像我在 PHP 中所做的那样使用 $provider->getResourceOwner($token)->toArray(); 解密它,但是输入函数一个 League\OAuth2\Client\Token\Accesstoken 对象,而不是一个字符串。

  1. 有什么方法可以使用此信息构建 League\OAuth2\Client\Token\Accesstoken,以便我可以使用 $provider->getResourceOwner($token)->toArray(); 获取必要的信息以登录用户吗?
  2. 或者有没有其他方法可以在后端接收和解密 JWT idToken 值?如果我使用 Google PHP SDK as 来处理集成,而不是我目前正在使用的联盟,那么是否有更好的解密 JWT idToken 的方法?看起来这是可能的,看看 Google's resources

对这些问题中的任何一个能够安全地解决这个问题或帮助我朝着那个方向前进的答案将不胜感激。

提前致谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。