我们使用JVM后端运行Web应用程序(Java 7更新75;代码在Scala中,但我不相信这是相关的).我们使用Google通过Oauth进行身份验证.
在过去的几个月中,我们一直在间歇性地无法对用户进行身份验证.
重定向,并从谷歌是成功的,但是当我们试图打电话给token_endpoint在https://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
我正在将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年以来尚未更新.
我正在寻找一个维护项目,最好直接从谷歌.
防止用户使用不以@ mycompany.com结尾的电子邮件地址通过Firebase/Google身份验证登录我们的内部应用程序的最佳方法是什么?
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
我已经向Google Dev Advocate寻求帮助,因为我正在努力在我的Google Actions应用上实施帐户关联,他向我发送了一篇文档链接,该文章已经阅读并建议我也咨询Stackoverflow.我已经完成了第二个建议,并努力找到我的问题的确切答案,我已经在这里链接到doc文章,添加我的所有查询并将其发送回Dev Advocate,希望得到更多的澄清特别是提醒一下,关于该主题的完整新手可以阅读文档,并且不应该给予任何理由.
这篇文章我指的是https://developers.google.com/actions/identity/account-linking
我的疑问如下:
使用OAuth实施帐户关联时,您必须拥有OAuth端点
所以我现在对应该放在Aiuthorization URL和Token URL中的内容非常困惑 - 为什么不以更基本和清晰的方式记录这些内容?我还读过它需要通过HTTPS提供服务,如果您正在本地和宠物项目上工作,这不是商业性的,您将无法支付HTTPS费用?
如果您的应用支持无缝帐户关联
将以下重定向URI列入白名单:https://oauth-redirect.googleusercontent.com/r/
在展开的OAuth 2.0表单中,使用您的OAuth 2.0客户端配置填写字段.填写范围时,请确保它们以空格分隔.
打开Google应用,然后转到"发现"标签.
调用您的应用.由于这是第一次使用您的Google帐户调用该应用,因此助理会通知您必须关联您的帐户.
除了这些问题,我还有以下内容:
谢谢,请记住文档应该适合每个人!
google-authentication google-oauth actions-on-google dialogflow-es
我在我的Django网络应用程序中使用Google Speech API.我已经为它设置了一个服务帐户,并且能够在本地进行API调用.我已将本地GOOGLE_APPLICATION_CREDENTIALS环境变量指向服务帐户的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_EMAIL和GOOGLE_PRIVATE_KEY.这是GitHub的讨论页面.
我想为我的Django网络应用程序提供类似(或不同的东西)的东西,我想避免将json文件上传到我的Django web-app的目录(如果可能),以确保安全.
django heroku environment-variables google-authentication google-speech-api
我需要连接到多个帐户的多个 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) 我有一个 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应用程序安装在用户设备上)。
我也对移动设备上的用户流程感到困惑,即:
我一直在使用这些信息并将我的系统基于eShopOnContainers 企业参考应用程序并使用这种微服务类型架构,唯一缺少的东西(就我而言)是社交登录,否则这种架构正是这种类型的东西我们正在建设。
facebook google-authentication oauth-2.0 xamarin identityserver4
我在 GCP Cloud Run 上部署了两个服务 (API)。打电话给他们service-one.myDomain.com和service-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?
在 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.com为service-one.myDomain.com和service-two@myproject.iam.gserviceaccount.com为service-two.myDomain.com
在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
我有一个 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)
每当我使用Google One Tap登录 Android 应用程序时,我都会收到一个有效期约为一小时的令牌 ID 。我应该如何获得刷新令牌以避免该令牌过期时每小时登录?我查了官方文档,但没有关于刷新令牌的内容。这是否意味着每次发生这种情况时我们都需要手动登录(并获取新令牌)?
https://developers.google.com/identity/one-tap/android/overview
android google-authentication google-identity google-one-tap
google-oauth ×3
android ×2
javascript ×2
oauth-2.0 ×2
django ×1
email ×1
facebook ×1
google-iam ×1
heroku ×1
java ×1
jvm-hotspot ×1
react-native ×1
ruby ×1
xamarin ×1