标签: google-authentication

从JVM访问令牌端点时出现Google身份验证错误

我们使用JVM后端运行Web应用程序(Java 7更新75;代码在Scala中,但我不相信这是相关的).我们使用Google通过Oauth进行身份验证.

在过去的几个月中,我们一直在间歇性地无法对用户进行身份验证.

重定向,并从谷歌是成功的,但是当我们试图打电话给token_endpointhttps://www.googleapis.com/oauth2/v4/token验证验证我们有时出现以下情况例外:javax.net.ssl.SSLHandshakeException: server certificate change is restrictedduring renegotiation.

这个关于另一个问题的评论让我发现了一个JDK错误,它可以表现为这个异常(什么意思是"javax.net.ssl.SSLHandshakeException:服务器证书更改在重新协商期间受到限制"以及如何防止它?).

我的工作假设是:

该错误(https://bugs.openjdk.java.net/browse/JDK-8072385)表示仅检查主题备用名称(SAN)列表中的第一个条目.当验证的主机名在SAN列表中但不在列表顶部时,抛出上述异常.

昨天(2015年5月27日)我们看到两个不同的证书是间歇性地从www.googleapis.com提供的.第一个(串行67:1a:d6:10:cd:1a:06:cc)有一个SAN列表,DNS:*.googleapis.com, DNS:*.clients6.google.com, DNS:*.cloudendpointsapis.com, DNS:cloudendpointsapis.com, DNS:googleapis.com而第二个(串行61:db:c8:52:b4:77:cf:78)有一个SAN列表:DNS:*.storage.googleapis.com, DNS:*.commondatastorage.googleapis.com, DNS:*.googleapis.com.

由于JVM中的错误,我们可以验证第一个证书,但是第二个证书会抛出异常(尽管完全有效),因为*.googleapis.com它不是SAN列表中的第一个条目.

修复程序尚未发布7u85(没有提及何时可用).

我已经将我们集群的一个节点降级到7u65,但是证书似乎在我们这样做的时候就已经恢复了(我们看到的最后一个错误是22:20GMT)所以很难确定肯定的解决方案.

有没有其他人经历过这个或类似的东西,除了降级之外还有其他任何解决方法(降级会删除各种其他SSL/TLS检查)?

java jvm-hotspot ssl-certificate google-authentication google-oauth

8
推荐指数
1
解决办法
891
查看次数

验证Ruby中的Google ID令牌的完整性

我正在将Google登录功能集成到Rails驱动的网站中.我按照https://developers.google.com/identity/sign-in/web/backend-auth上的指南操作,但我遇到了一些问题.

主要的挂断是验证ID令牌段落的完整性.它概述了验证JWT的几个步骤,然后说明:

我们强烈建议您为自己的平台使用Google API客户端库,或调用我们的tokeninfo验证终端,而不是编写自己的代码来执行这些验证步骤.

我一直在使用tokeninfo端点进行调试,但文档说明:

[ tokeninfo端点]仅适用于每月活动用户少于100个的部署,以及用于调试和信息目的的部署.

...

使用其中一个Google API客户端库是在生产环境中验证Google ID令牌的推荐方法.

对于Java,Google API客户端库包含一个GoogleIdTokenVerifier可以验证ID令牌的对象.

对于Python,verify_id_token提供了一个函数.

我搜索了Google客户端API Ruby gem(目前处于alpha版)以及google-auth-library-ruby gem 的文档,但未能找到相同的功能.

Ruby中有相同的这些吗?


更新:

看来https://code.google.com/p/google-id-token/可能会这样做; 但是,该项目自2014年以来尚未更新.

我正在寻找一个维护项目,最好直接从谷歌.

ruby ruby-on-rails google-authentication oauth-2.0

8
推荐指数
1
解决办法
2144
查看次数

如何在React Native中限制google登录我公司的电子邮件域名(@ company.com)?

防止用户使用不以@ mycompany.com结尾的电子邮件地址通过Firebase/Google身份验证登录我们的内部应用程序的最佳方法是什么?

目标

  • 阻止用户使用错误的电子邮件登录该应用
  • 获取用户的公司电子邮件地址并将其用于其他地方的身份验证(即从内部网站提取数据)

约束

  • 我使用的是react-native init,因为我必须使用我们公司的原生SDK模块实现
  • 最好使用Firebase的解决方案,因为我们已经将其与所述原生SDK模块一起用于FCM /推送通知.

研究结果

  • 我看到react-native-google-signin有一个"hostedDomain"选项,但它似乎没有做任何事情.我不确定如何使用它,并且没有使用它的文档或好例子.有它功能请求这里,但是这就是我能找到.
  • 我看到有一个类似的repo,react-native-google-sign-in,但它不提供有关此主题的更多信息.
  • 我在某处读到我可能认为这一切都错了,身份验证不能限制电子邮件地址(?),但我可以限制谁可以使用所述电子邮件地址访问信息.这对我没有帮助,因为我们现在没有使用Firebase的数据库.我需要一种方法来指导用户使用他们的公司电子邮件登录.
  • 这个人似乎有类似的问题,并找到了护照的解决方案,但我不知道如何将此应用于我的用例.

建立

  • IntelliJ Ultimate 2017.2.2
  • React Native 0.47.1(使用react-native init,而不是CRNA或expo,因为我需要与本机SDK模块集成)
  • 来自Firebase的google-services.json存在于android/app文件夹中

Android安装程序

package.json依赖项

"dependencies": {
    "create-react-class": "^15.6.0", /* Ignore this */
    "firebase": "^4.2.0",
    "react": "16.0.0-alpha.12",
    "react-native": "0.47.1",
    "react-native-app-intro": "^1.1.5",
    "react-native-google-signin": "^0.11.0",
    "react-native-linear-gradient": "^2.2.0",
    "react-navigation": "^1.0.0-beta.12"
}
Run Code Online (Sandbox Code Playgroud)

安卓/ settings.gradle

rootProject.name = '[My Project Name]'
include ':react-native-google-signin'
project(':react-native-google-signin').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-google-signin/android')
include ':react-native-linear-gradient'
project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android')

include ':app', ':[Internal Android SDK]'
Run Code Online (Sandbox Code Playgroud)

安卓/的build.gradle …

email android google-authentication react-native firebase-authentication

8
推荐指数
1
解决办法
2229
查看次数

实施帐户链接 - 查询

我已经向Google Dev Advocate寻求帮助,因为我正在努力在我的Google Actions应用上实施帐户关联,他向我发送了一篇文档链接,该文章已经阅读并建议我也咨询Stackoverflow.我已经完成了第二个建议,并努力找到我的问题的确切答案,我已经在这里链接到doc文章,添加我的所有查询并将其发送回Dev Advocate,希望得到更多的澄清特别是提醒一下,关于该主题的完整新手可以阅读文档,并且不应该给予任何理由.

这篇文章我指的是https://developers.google.com/actions/identity/account-linking

我的疑问如下:

  1. 隐式代码流和授权代码流之间有什么区别.在文章"授权代码"中选择,为什么?
  2. 虽然我在Stackoverflow上找到了获取客户端ID和密码的地方,但您认为在文章中添加链接不是很好吗?
  3. 授权网址 - 这是我没有找到明确的指南.一些Stackoverflow票据报告可以使用2个Google OAUth URL(对于授权URL,请输入https://accounts.google.com/o/oauth2/v2/auth. 对于令牌URL,请输入https://www.googleapis.com/oauth2/v4/token),但最近谷歌政策的一项变化表明

使用OAuth实施帐户关联时,您必须拥有OAuth端点

所以我现在对应该放在Aiuthorization URL和Token URL中的内容非常困惑 - 为什么不以更基本和清晰的方式记录这些内容?我还读过它需要通过HTTPS提供服务,如果您正在本地和宠物项目上工作,这不是商业性的,您将无法支付HTTPS费用?

  1. 什么是无缝帐户链接,为什么不解释和记录?

如果您的应用支持无缝帐户关联

  1. 我们应该在哪里列入白名单?

将以下重定向URI列入白名单:https://oauth-redirect.googleusercontent.com/r/

  1. 您的OAuth 2.0客户端配置详细信息是什么?他们在哪里可以找到?

在展开的OAuth 2.0表单中,使用您的OAuth 2.0客户端配置填写字段.填写范围时,请确保它们以空格分隔.

  1. 我没有在Oneplus 3T Google App上看到Discovery选项卡,我还能在哪里找到它?

打开Goog​​le应用,然后转到"发现"标签.

  1. 这就是我被卡住的地方 - 就像Stackoverflow上的许多其他人我得到的"该帐户尚未链接"错误.也许解决上述问题将解决帐户链接错误?

调用您的应用.由于这是第一次使用您的Google帐户调用该应用,因此助理会通知您必须关联您的帐户.

除了这些问题,我还有以下内容:

  1. 我想访问用户日历和用户基本信息,所以我添加了个人资料,电子邮件和https://www.googleapis.com/auth/calendar你能确认这些是正确的吗?

谢谢,请记住文档应该适合每个人!

google-authentication google-oauth actions-on-google dialogflow-es

8
推荐指数
1
解决办法
2288
查看次数

将JSON文件的内容加载到Heroku的环境变量中

我在我的Django网络应用程序中使用Google Speech API.我已经为它设置了一个服务帐户,并且能够在本地进行API调用.我已将本地GOOGLE_APPLICATION_CREDENTIALS环境变量指向服务帐户的json文件,该文件包含所有凭据.

这是我的服务帐户的json文件的快照: 在此输入图像描述

我试过GOOGLE_APPLICATION_CREDENTIALS通过运行来设置heroku的环境变量

$ heroku config:set GOOGLE_APPLICATION_CREDENTIALS="$(< myProjCreds.json)"

$ heroku config
GOOGLE_APPLICATION_CREDENTIALS: {
Run Code Online (Sandbox Code Playgroud)

^^它"在json文件的第一次出现时终止,紧接在{ 和之后

$ heroku config:set GOOGLE_APPLICATION_CREDENTIALS='$(< myProjCreds.json)'

$ heroku config
GOOGLE_APPLICATION_CREDENTIALS: $(< myProjCreds.json)
Run Code Online (Sandbox Code Playgroud)

^^该命令被保存到环境变量中

我尝试将heroku的GOOGLE_APPLICATION_CREDENTIALSenv变量设置为服务帐户的json文件的内容,但它不起作用(因为显然此变量的值必须是json文件的绝对路径).我发现它授权一个开发者账户,而无需加载JSON户头,而使用的方法GOOGLE_ACCOUNT_TYPE,GOOGLE_CLIENT_EMAILGOOGLE_PRIVATE_KEY.是GitHub的讨论页面.

我想为我的Django网络应用程序提供类似(或不同的东西)的东西,我想避免将json文件上传到我的Django web-app的目录(如果可能),以确保安全.

django heroku environment-variables google-authentication google-speech-api

8
推荐指数
1
解决办法
1231
查看次数

gapi.auth2 已经用不同的选项初始化。考虑调用 gapi.auth2.getAuthInstance() 而不是 gapi.auth2.init()

我需要连接到多个帐户的多个 Google 议程以获取事件。为要连接的每个议程调用以下函数,它适用于第一个查询的帐户,之后出现上述错误。如何连接到下一个帐户,身份验证是否需要断开连接或取消设置?

function runClient(apikey, client_id, calendar_id, post_id){
    gapi.load('client:auth2', initClient);
    function initClient() {
        gapi.client.init({
                discoveryDocs: ["https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest"],
        }).then(() => {
            gapi.auth2.init({
                client_id: client_id,
                apiKey: apikey,
                scope: "https://www.googleapis.com/auth/calendar.readonly",
            }).then(getUpcomingEvents(calendar_id, post_id));
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript google-authentication

8
推荐指数
1
解决办法
983
查看次数

Xamarin 表单 + IdentityServer + 外部提供程序 (Facebook/Google)

我有一个 ASP.NET Core Web 应用程序和 ASP.NET Core Web API,目前正在使用 IdentityServer4。

我正在添加 Xamarin Forms 应用程序(Android + iOS),但找不到任何使用 Facebook 和/或 Google 以及 IdentityServer 的 Xamarin Forms 应用程序示例。

我遇到的很多示例都使用 WebViews,我不想使用它,而是想使用本机应用程序(Facebook/Google)或移动浏览器(Chrome/Safari)来进行身份验证(取决于 Facebook/Google应用程序安装在用户设备上)。

我也对移动设备上的用户流程感到困惑,即:

  • 用户打开应用
  • 用户点击 Facebook 登录
  • 应用程序通过 IdentityServer 将用户重定向到 Facebook 移动站点 (safari/chrome)
  • 用户登录 Facebook / 允许访问我的应用
  • 然后将用户重定向回身份服务器
  • 身份服务器登录/注册用户
  • 身份服务器然后重新打开我的移动应用程序传递令牌
  • 我的应用程序然后保存令牌并将其用于所有 api 调用

我一直在使用这些信息并将我的系统基于eShopOnContainers 企业参考应用程序并使用这种微服务类型架构,唯一缺少的东西(就我而言)是社交登录,否则这种架构正是这种类型的东西我们正在建设。

facebook google-authentication oauth-2.0 xamarin identityserver4

8
推荐指数
2
解决办法
3496
查看次数

Google Cloud Run 身份验证服务到服务

我在 GCP Cloud Run 上部署了两个服务 (API)。打电话给他们service-one.myDomain.comservice-two.myDomain.com。我希望在调用 service-2 时对 service-one 进行身份验证,而不管任何用户在做什么。

我已阅读并实施了 GCP Cloud Run 文档中关于 Authenticating service-to-service ( https://cloud.google.com/run/docs/authenticating/service-to-service ) 的说明,但service-one.myDomain.com未能成功调用service-two.myDomain.com接收401:未经授权的响应。

关于如何service-one成功拨打电话的任何想法service-two

这是我的设置:

IAM 和服务帐户:

在 google IAM 上,我创建了两个服务帐户并授予它们“Cloud Run Invoker” ( roles/run.invoker) 角色: service-one@myproject.iam.gserviceaccount.com service-two@myproject.iam.gserviceaccount.com

在 Cloud Run 中,我将服务帐户从“默认计算服务帐户”更改为我创建的服务帐户。我service-one@myproject.iam.gserviceaccount.comservice-one.myDomain.comservice-two@myproject.iam.gserviceaccount.comservice-two.myDomain.com

OIDC 身份验证令牌:

service-one.myDomain.com我调用元数据服务器以从以下 url 获取令牌 (jwt): http://metadata/computeMetadata/v1/instance/service-accounts/default/identity?audience=https://service-two.myDomain.com请求标头设置为{'Metadata-Flavor': 'Google'}请求成功并且我收到的令牌被解码为具有以下有效负载:

{
  "alg": "RS256",
  "kid": "9cef5340642b157fa8a4f0d874fe7543872d82db",
  "typ": "JWT" …
Run Code Online (Sandbox Code Playgroud)

google-authentication google-oauth google-cloud-platform google-iam google-cloud-run

8
推荐指数
1
解决办法
2270
查看次数

谷歌登录弹出窗口不会持续很长时间,或者显示“请求的操作无效”

我有一个 firebase web 应用程序,谷歌登录弹出窗口不起作用,它不会持续或给我一条消息(检查图片)是否有解决方案

//sign in with google
const googleProvider = new GoogleAuthProvider();
const signInWithGoogle = document.querySelector('#google-icon');
signInWithGoogle.addEventListener('click', (e) => {
e.preventDefault();
signInWithPopup(auth, googleProvider).then((result) => {
 const user = result.user;
 const credential = GoogleAuthProvider.credentialFromResult(result);
 const accessToken = credential.accessToken;})
 .catch((error) => {
   const errorCode = error.code;
   const errorMessage = error.message;
   const email = error.email;
   const credential = GoogleAuthProvider.credentialFromError(error);
 });
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

javascript google-authentication firebase-authentication

8
推荐指数
1
解决办法
4242
查看次数

Android + Google 一键刷新令牌?

每当我使用Google One Tap登录 Android 应用程序时,我都会收到一个有效期约为一小时的令牌 ID 。我应该如何获得刷新令牌以避免该令牌过期时每小时登录?我查了官方文档,但没有关于刷新令牌的内容。这是否意味着每次发生这种情况时我们都需要手动登录(并获取新令牌)?

https://developers.google.com/identity/one-tap/android/overview

android google-authentication google-identity google-one-tap

8
推荐指数
0
解决办法
866
查看次数