标签: google-authentication

Google身份验证:OAuth2.0与OpenID Connect

我正在评估Google提供的用于在我的网络应用程序中添加Google登录的可能选项.我看到的可能选项是

  1. Google+登录
  2. OAuth2.0的
  3. OpenID Connect(登录OAuth2.0)

我没有使用第一个,因为它限制了我可以在一天到10000的API调用

在2和3中,我倾向于获得第3名.我真的不需要API授权,在我的情况下我并不担心访问令牌过期.一旦我从Google收到用户个人资料,我的网络应用就会管理自己的用户会话,而无需向Google查询与用户相关的任何其他数据.根据Google文档,#3允许我自定义用户同意屏幕,而1和2不允许.

我对2和3之间的比较有何评论?

google-authentication oauth-2.0 google-oauth openid-connect

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

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
查看次数

Google Apps Script 个人脚本不会授权

我以前使用过 Google Apps 脚本UrlFetchApp没有问题。

昨天我创建了一个新的,如果我包含该UrlFetchApp服务,我将无法运行任何功能——即使它被注释掉了!

当我尝试运行脚本时,我会得到通常的“权限”弹出窗口。但是当我同意时,我得到:

暂时禁用此应用的 Google 登录 此应用尚未通过 Google 验证才能使用 Google 登录。


这是个人脚本,我是唯一会使用它的人 - 我有什么选择?我不会去获取域只是为了通过验证来运行一个简单的小脚本......

google-authentication google-apps-script oauth-2.0 google-signin

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

为什么在通过IMAP连接到Gmail时会收到"需要Web登录"消息?

我正在尝试通过IMAP连接并从Gmail检索邮件标头列表.

我收到了Google的回复,其中包含"需要Web登录",然后是一个URL,通过网络界面继续登录.记录:http://hastebin.com/odufaducew.vhdl

为什么会这样?如何处理这种情况?我正在使用适用于iOS的MailCore2 lib,如果这有帮助的话.

gmail imap google-authentication gmail-imap mailcore2

7
推荐指数
2
解决办法
7040
查看次数

在本地docker run中传递google默认应用程序凭据

有没有办法通过docker run 传递我的本地google默认应用程序凭据(https://developers.google.com/identity/protocols/application-default-credentials)?

我的用例:

  • 我的机器上本地运行的代码正确处理默认应用程序凭据
  • 在GCE实例上的docker镜像内运行的代码也可以正确处理默认的应用程序凭据
  • 问题出在我的机器上"docker run".在docker容器中运行的代码不使用主机默认应用程序凭据.

如果我能告诉"docker run"将主机google默认应用程序凭据传递给docker镜像,那将是很好的.

google-authentication google-cloud-platform google-cloud-sdk

7
推荐指数
1
解决办法
3612
查看次数

找不到模块googleapis

这是我的代码:

var http = require('http');
var express = require('express');
var Session = require('express-session');
var google = require('googleapis');
var plus = google.plus('v1');
var OAuth2 = google.auth.OAuth2;
Run Code Online (Sandbox Code Playgroud)

这是一个错误:

Error: Cannot find module 'googleapis'
    at Function.Module._resolveFilename (module.js:485:15)
    at Function.Module._load (module.js:437:25)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/software/Harsh Patel/test/demo_auth/server.js:4:14)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
Run Code Online (Sandbox Code Playgroud)

我试图用这些方法重新安装模块

  1. npm install googleapis --save
  2. npm install googleapis
  3. npm install (将模块添加到package.json文件中)

但这些方法不起作用.

我在node_modules目录中找到了googleapis模块.

google-api google-authentication node.js

7
推荐指数
1
解决办法
4085
查看次数

使用 Google Compute Engine 上的应用程序默认凭据访问 Sheets API

ADC(应用程序默认凭据)工作流程是否仅支持 Google Cloud API(例如,支持 Google Cloud Storage API,但不支持 Google Sheet API)?

我指的是google.auth 的默认方法- 不必在代码中存储任何私钥是一个巨大的胜利,也是有效利用 ADC(应用程序默认凭据)设置的主要好处。

GOOGLE_APPLICATION_CREDENTIALS如果我将环境变量设置为私钥文件(例如 key.json),则以下代码将有效。default这与包中步骤 1 的方法一致google.auth1. If the environment variable GOOGLE_APPLICATION_CREDENTIALS is set to the path of a valid service account JSON private key file, then it is loaded and returned.

import google.auth
from apiclient import discovery

credentials, project_id = google.auth.default(scopes=['https://www.googleapis.com/auth/spreadsheets'])

sheets = discovery.build('sheets', 'v4', credentials=credentials)

SPREADSHEETID = '....'

result = sheets.spreadsheets().values().get(spreadsheetId=SPREADSHEETID, range='Sheet1!A:B').execute()

print result.get('values', [])
Run Code Online (Sandbox Code Playgroud)

现在,看看该方法的第 4 步: …

python google-authentication google-compute-engine google-cloud-platform google-sheets-api

7
推荐指数
1
解决办法
3317
查看次数

googleUser.getAuthResponse()。id_token不以闪亮方式返回id_token

我正在尝试创建一个闪亮的应用程序,该应用程序首先使用OAuth进行授权(请参阅https://developers.google.com/identity/sign-in/web/sign-in),然后获取一个令牌,并使用来访问使用googlesheets4库的Google工作表。登录过程正常进行,这意味着我可以看到我的电子邮件(以及的其他数据googleUser.getBasicProfile()。似乎没有id_token返回。)最小示例:

app.R

library(shiny)
library(shinyjs)
library(googlesheets4)

shinyApp(
  ui = fluidPage(
    useShinyjs(),  
    tags$head(tags$script(src="https://apis.google.com/js/platform.js")),
    tags$meta(name = "google-signin-scope", content = "profile email"),
    tags$meta(name = "google-signin-client_id", content = "<CLIENT_ID>.apps.googleusercontent.com"),
    includeScript("signin.js"),
    div(id = "signin", class = "g-signin2", "data-onsuccess" = "onSignIn"),
    actionButton("signout", "Sign Out", onclick="signOut();", class="btn-danger"),

    with(tags, dl(dt("Email"), dd(textOutput("g.email")),
                  dt("Token"), dd(textOutput("g.id_token"))
                  )),

    tableOutput("df")
  ),


  server = function(input, output) {

    output$g.email = renderText({ input$g.email }) # here my email is printed in the app
    output$g.id_token = renderText({ input$g.id_token}) # no …
Run Code Online (Sandbox Code Playgroud)

r google-authentication google-oauth shiny google-sheets-api

7
推荐指数
1
解决办法
149
查看次数

“使用 Google 登录”按钮的 data-login_uri 属性应使用什么?

我正在尝试实现“使用 Google 登录”按钮,如下所述: https: //developers.google.com/identity/gsi/web/guides/display-button

我对它的期望感到困惑data-login_uri,如下所示(取自上面链接的文档):

<div id="g_id_onload"
     data-client_id="YOUR_GOOGLE_CLIENT_ID"
     data-login_uri="https://your.domain/your_login_endpoint"
     data-auto_prompt="false">
</div>
Run Code Online (Sandbox Code Playgroud)

我已正确配置应用程序的客户端 ID,并且可以完成 Google 弹出窗口提供的大部分登录/身份验证流程。但是,一旦弹出窗口关闭,它就会尝试POST到我指定为data-login_uri.

这让我相信我们需要一个后端端点来做......某事......但我无法找到有关此端点应该如何表现的任何文档,因此我不确定有什么要求与我的后端开发人员沟通。

我错过了什么?

authentication google-authentication google-account google-client-login google-signin

7
推荐指数
1
解决办法
5388
查看次数