首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在AppEngine上使用Appengine的OpenID和facebook OAuth混合进行身份验证?

在AppEngine上使用Appengine的OpenID和Facebook OAuth混合进行身份验证,可以通过以下几个步骤实现:

  1. 安装必要的库:

在开始之前,需要安装以下库:

  • google-auth
  • google-auth-oauthlib
  • google-auth-httplib2
  • requests
  • requests-oauthlib

可以使用以下命令安装:

代码语言:txt
复制
pip install google-auth google-auth-oauthlib google-auth-httplib2 requests requests-oauthlib
  1. 配置应用程序:

在应用程序中,需要配置以下内容:

  • 应用程序的客户端ID和客户端密钥
  • 应用程序的重定向URI
  • 应用程序的OpenID提供商的URL
  • 应用程序的Facebook提供商的URL
  1. 实现身份验证:

在应用程序中,可以使用以下代码实现身份验证:

代码语言:python
代码运行次数:0
复制
from google.auth.transport import requests
from google.oauth2 import id_token
from google.auth.transport.requests import Request
from google_auth_oauthlib.flow import Flow
from google.oauth2.credentials import Credentials
from google.auth import crypt
from google.auth import jwt
from google.auth import transport
from google.auth.transport.requests import Request
from google.oauth2 import service_account
import requests
from requests_oauthlib import OAuth2Session

# 配置应用程序
client_id = 'your_client_id'
client_secret = 'your_client_secret'
redirect_uri = 'your_redirect_uri'
openid_provider = 'your_openid_provider_url'
facebook_provider = 'your_facebook_provider_url'

# 实现OpenID身份验证
def authenticate_openid(request):
    authorization_url, state = Flow.from_client_config(
        {
            'web': {
                'client_id': client_id,
                'client_secret': client_secret,
                'redirect_uris': [redirect_uri],
                'auth_uri': openid_provider,
                'token_uri': openid_provider,
                'issuer': openid_provider,
            }
        },
        scopes=['openid', 'email', 'profile'],
    ).authorization_url(request_uri=redirect_uri)

    # 跳转到授权页面
    return redirect(authorization_url[0])

# 实现Facebook OAuth身份验证
def authenticate_facebook(request):
    facebook = OAuth2Session(client_id, redirect_uri=redirect_uri)
    authorization_url, state = facebook.authorization_url(facebook_provider)

    # 跳转到授权页面
    return redirect(authorization_url)

# 处理回调请求
def handle_callback(request):
    # 处理OpenID回调请求
    if 'code' in request.args:
        flow = Flow.from_client_config(
            {
                'web': {
                    'client_id': client_id,
                    'client_secret': client_secret,
                    'redirect_uris': [redirect_uri],
                    'auth_uri': openid_provider,
                    'token_uri': openid_provider,
                    'issuer': openid_provider,
                }
            },
            scopes=['openid', 'email', 'profile'],
            state=request.args['state'],
        )
        credentials = flow.fetch_token(Request())
        id_info = id_token.verify_oauth2_token(credentials.id_token, Request())

        # 处理Facebook回调请求
    elif 'oauth_token' in request.args:
        facebook = OAuth2Session(client_id, state=request.args['state'])
        token = facebook.fetch_token(facebook_provider, client_secret=client_secret, authorization_response=request.url)
        id_info = facebook.get('https://graph.facebook.com/me?fields=id,name,email').json()

    # 处理身份验证成功后的逻辑
    # ...

通过以上步骤,可以在AppEngine上使用Appengine的OpenID和Facebook OAuth混合进行身份验证。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Dart服务器端 mojito包 原

介绍 现代Web应用程序微框架,从shelf框架开始构建 就像它名字一样,Mojito主要是糖其他成分混合物。 Mojito故意在几个shelf包上非常薄,并专注于构建应用程序整体体验。...如果在appengine运行,则可以使用以下命令设置开发模式。...静态资源处理 静态资产(htmlcss)是大多数Web应用程序支柱。 在生产中,这些资产是从文件系统提供,但在开发中,使用pub serve更方便。...从那里你可以访问开箱即用oauth存储(例如memcache内存中开发),以及用于常见授权服务器自定义路由构建器,github,googlebitbucket(PR欢迎更多服务器)。...如果要将其应用于所有路由,请使用global构建器。 全局认证 例如,以下内容将应用程序设置为使用基本身份验证,允许通过http进行访问(除了开发之外一个坏主意)并允许匿名访问。

1.5K10

2013年01月09日 Go生态洞察:App Engine SDK与工作区(GOPATH)深度解析

现在,你可以在构建App Engine应用时使用“go get”,并在普通Go程序App Engine应用之间无缝切换。...示例:使用OAuth 2.0库 // 安装OAuth 2.0库到工作区 go get golang.org/x/oauth2 // 在App Engine应用中导入OAuth包 import "golang.org.../x/oauth2" 混合独立程序与App Engine应用 利用Go标准net/http包,许多Go Web服务器可以在App Engine运行,只需少量修改。...例如,Go发行版中godoc既可以作为独立程序运行,也可以作为App Engine应用运行。 构建混合应用 通过使用构建约束,你可以编写既是独立Web服务器又是App Engine应用程序。...使用// +build appengine约束文件将被App Engine SDK构建,而被go tool忽略。 相反,使用// +build !

7210

AppengineJS:JavaScript到GAE

该端口在App Engine Java之上使用Rhino(JavaScriptJVM实现),但是该API基于App Engine Python,因为它是JS之类脚本语言。...AppengineJS文档解释说,他们使用JavaScript编码约定: 像“thisisa_name”这样Python名称被转换为JavaScript名称,“thisIsAName”。...此外,所有delete()函数都被重命名为.remove()函数,以避免与delete关键字发生冲突(DELETE()别名也被提供,但不建议使用,将来可能会被弃用)。...blobstore.serve(params.key, env); } AppengineJS文档中还介绍了URL获取,图像,电子邮件,Memcache缓存,用户,任务队列,XMPP,表单,Quato配额OAuth...:50%(可用)     •google / appengine / api / oauth:90%(未测试) 你可以在GitHub下载AppengineJS。

1.9K60

headless CMS_model view controller

为了更好地理解HCMS如何在幕后工作,我将解释如何设计构建RawCMS,一个带有Oauth2Aspnet.Core Headless CMS,扩展插件系统,业务逻辑支持。...针对外部提供程序身份验证:大多数解决方案不允许针对外部系统对用户进行身份验。我说是最常见情况,即您拥有一个中央身份验证系统,并且所有各方都会传递用户令牌\票证以代表用户进行操作。...换句话说,如果我有一个oauth2服务器,我想在前端进行身份验证,并使用令牌向内部网所有应用程序进行调用,而不仅仅是HCMS,并被识别为我自己。...对其他auth系统进行身份验证可能性 可以使用挂钩/事件系统添加业务逻辑可能性 可以添加自定义端点来管理与数据无关事件可能性 可以在插件系统中添加功能可能性 验证数据可能性 使用多种协议公开数据...,webapi,GraphQL,Odata 架构 基本,我将实现架构如下。

75420

FastAPI(57)- 安全相关概念

OAuth2 OAuth2 是一个规范,它定义了几种处理身份验证授权方法 这是一个相当广泛规范,涵盖了几个复杂用例 它包括使用“第三方”进行身份验证方法 比如在抖音通过微信、QQ 登录,底层用就是...例如,Google 登录使用 OpenID Connect(其底层使用 OAuth2) 但是 Facebook 登录不支持 OpenID Connect,它有自己 OAuth2 风格 OpenID...(not "OpenID Connect") 还有一个“OpenID”规范,它试图解决与 OpenID Connect 相同问题,但不是基于 OAuth2 所以,这是一个完整附加系统 但它现在不是很流行或使用...基本身份验证 HTTP 摘要 oauth2 处理安全性所有 OAuth2 方法(称为“流”) 其中一些流程适用于构建 OAuth 2.0 身份验证提供程序( Google、Facebook、Twitter...openIdConnect 有一种方法可以定义如何自动发现 OAuth2 身份验证数据 这种自动发现是 OpenID Connect 规范中定义

90110

「应用安全」OAuthOpenID Connect全面比较

当您想要让用户使用他们外部服务帐户(FacebookTwitter)登录您网站时。由于“OAuth身份验证”这一术语经常在此上下文中使用,因此您可能认为必须为您服务实施OAuth。...身份验证授权之间区别很明显。 现在,是时候谈论“OAuth身份验证”了。 因为授权过程包括认证过程作为一部分,所以授权意味着认证。因此,有些人开始使用OAuth进行身份验证。...“ OpenID的人对这种情况抱有怨恨。- 抱歉,我不知道他们是否真的有这种感觉,但至少我可以想象他们认为OAuth身份验证远远超出他们之前定义规范级别,OpenID 2.0SAML。...它需要进行重大更改才能修改在假定选择或选择情况下编写现有代码,以便它可以处理可能值混合任意组合。...在任何一种情况下,事实,即使是拥有足够预算人力资源FacebookGitHub等大型科技公司也未能正确实施OAuthOpenID Connect。

2.4K60

Gradle For Android(5)--管理多Module编译

如果想要使用子目录来组成Module的话,Gradle也可以进行配置,例如下面的工程结构: project ├─── setting.gradle ├─── build.gradle ├─── app...如果这些子目录都有自己build.gradle文件,那么Gradle就会处理这些,并且把他们添加到构建过程Model中。这也就是为什么你应该在Module中使用相对于根目录路径进行依赖。...一旦你知道了构建过程Model是如何把他们放到一起时候,我们也就知道了配置多Module构建配置。我们可以在根目录build.gradle中配置给所有的Module中使用属性设置。...而war插件是后端运行分发重要插件,这个插件会生成一个War文件,可以在Java Web应用中被应用。最后appengine插件可以加载一系列构建Task,执行并且部署后端。...在appengine代码块中指定App Engine特殊配置: appengine { downloadSdk = true appcfg { oauth2

2.5K30

六种Web身份验证方法比较Flask示例代码

IETF:一次性密码系统 实现2FA:基于时间一次性密码实际工作原理(使用Python示例) OAuth OpenID OAuth/OAuth2 OpenID 分别是授权身份验证流行形式...它们用于实现社交登录,这是一种单点登录(SSO)形式,使用来自社交网络服务(Facebook,Twitter或Google)现有信息登录到第三方网站,而不是专门为该网站创建新登录帐户。...通过身份验证后,系统会将您重定向回自动登录网站。这是使用 OpenID 进行身份验证示例。它允许您使用现有帐户(通过OpenID提供程序)进行身份验证,而无需创建新帐户。...人们通常倾向于忽略 OAuth 应用程序请求权限。 在已配置 OpenID 提供程序没有帐户用户将无法访问您应用程序。...什么时候应该使用它们?这要视情况而定。基本经验法则: 对于利用服务器端模板 Web 应用程序,通过用户名密码进行基于会话身份验证通常是最合适。您也可以添加OAuthOpenID

7.3K40

关于OIDC,一种现代身份验证协议

OpenID Connect (OIDC) 则是在 OAuth2.0 基础发展起来一个身份认证协议。它在提供授权同时,也提供了一种标准化方式去验证终端用户身份。...应用场景 OAuth 2.0 常见于第三方应用需要访问用户数据场景,社交媒体登录、云服务API访问等。 OIDC 更适用于需要确认用户真实身份服务,企业应用单点登录、金融服务身份验证等。...重定向至 IdP:RP 将用户重定向到预先配置身份提供商(IdP)进行登录。 用户身份验证:用户在 IdP 输入凭证完成身份验证。...社交媒体登录:许多网站应用允许用户使用 Google、Facebook 等社交账户登录,背后即是 OIDC 在发挥作用。...六 总结 OpenID Connect 作为 OAuth 2.0 之上身份验证层,通过标准化流程强大安全特性,有效解决了现代网络环境中用户身份验证复杂挑战。

1.5K10

OIDC认证授权核心知识——高级开发必备

OIDC协议簇图谱 Core[2] OIDC核心,定义了OIDC核心流程, 如何在 OAuth 2.0 之上身份验证以及使用声明来传达有关最终用户(EU)信息 。...OpenID Connect Federation[11] 联合认证, 定义 OP RP 集如何通过使用联合操作符建立信任。...OIDC核心流程 OIDC 被抽象为以下5个步骤,如图: OIDC流程图 ① RP(客户端)向 OpenID 提供者(OP)发送请求。 ② OP 对最终用户进行身份验证并获得授权。...Hybrid Flow 基于以上两者混合流,也应该会被移除。 至于为什么没客户端凭据模式,是因为客户端凭据被设计用来做客户端之间交互End User根本没半毛钱关系。...流程OAuth2授权码流程完全一样。 ❝请注意,OIDC必须使用JWT作为令牌风格。 用户信息端点 OIDC还提供用户信息端点,这个端点是一个资源端点。

4.4K41

聊聊统一身份认证服务

OAuth 2.0基本概念 OpenId OpenID 是一个以用户为中心数字身份识别框架,它具有开放、分散性。...允许用户授权第三方移动应用访问他们存储在其他服务商存储私密资源(照片,视频,联系人列表),而无需将用户名密码提供给第三方应用。...,以及获取基本用户信息;它支持包括Web、移动、JavaScript在内所有客户端类型去请求和接收终端用户信息身份认证会话信息;它是可扩展协议,允许你使用某些可选功能,身份数据加密、OpenID...主要包括以下功能: 保护资源 使用本地帐户存储或外部身份提供程序对用户进行身份验证 提供会话管理单点登录 管理验证客户端 向客户发放身份访问令牌 验证令牌 用户(Users 用户是使用注册客户端访问资源的人...授权码模式是一种混合模式,是目前功能最完整、流程最严密授权模式。它主要分为两大步骤:认证授权。

5.1K31

IdentityServer4 知多少

允许用户授权第三方移动应用访问他们存储在其他服务商存储私密资源(照片,视频,联系人列表),而无需将用户名密码提供给第三方应用。...OAuth允许用户提供一个令牌而不是用户名密码来访问他们存放在特定服务商数据。每一个令牌授权一个特定网站内访问特定资源(例如仅仅是某一相册中视频)。...Web、移动、JavaScript在内所有客户端类型去请求和接收终端用户信息身份认证会话信息;它是可扩展协议,允许你使用某些可选功能,身份数据加密、OpenID提供商发现、会话管理等。...比如,Facebook、Google、QQ、微博都是比较知名OpenId Connect提供商。 3....否则会发生密码泄露危险。该模式不推荐使用。 5.3. Authorization Code 授权码模式是一种混合模式,是目前功能最完整、流程最严密授权模式。它主要分为两大步骤:认证授权。

2.9K20

X-Forwarded-For 是一个 HTTP 扩展头

HTTP/1.1(RFC 2616)标准中并没有对它定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP,现在已经成为事实标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用...业务方服务之前使用是 v1.6.3 版本,我们先看看该版本 Context.ClientIP() 方法实现: // ClientIP 方法可以获取到请求客户端IPfunc (c *Context)...// 只有 CIDR 列表不为空,这里才会将 remoteIP 已配置可信 CIDR 列表进行比对。...•X-Client-Real-IP:是一我们在云厂商 WAF/CDN 上自定义 Header,是由云厂商在边缘节点设置取值 $remote_addr   Header,可以保证我们获取到真实客户端...这个特性基本绝大部分云厂商(阿里云、华为云、腾讯云等)都支持。 网络请求通常是浏览器(或其他客户端)发出请求,通过层层网络设备转发,最终到达服务端。

1.1K20

通过 App Engine 强制下载文件

问题背景在 App Engine 中,当用户访问静态文件(例如媒体文件)时,默认情况下,浏览器会尝试对文件进行流媒体播放。...这对于某些类型文件(视频音频)来说通常是理想,但对于其他类型文件(如图像和文档)来说,用户可能希望直接下载该文件。...force_download=true代码示例以下是一个使用 App Engine 内置 appengine_gcs 库实现强制下载功能示例:from google.appengine.api import...(blob_key) blob_file = blob_info.open(headers) return blob_file.read()这个函数接受两个参数:filename file_name...Content-Disposition 头告诉浏览器将文件下载到用户计算机而不是在浏览器中显示它。最后,函数获取 BlobInfo 对象,然后使用 open() 方法打开 BlobFile 对象。

9810

关于Web验证几种方法

因此通常需要一个备用设备,这个设备会引入一个额外攻击媒介。 ** OAuth OpenID** OAuth/OAuth2 OpenID 分别是授权身份验证流行形式。...通过身份验证后,你将被重定向回自动登录网站。这是使用 OpenID 进行身份验证示例。它让你可以使用现有帐户(通过一个 OpenID 提供程序)进行身份验证,而无需创建新帐户。...最著名 OpenID 提供方有谷歌、Facebook、Twitter GitHub。 登录后,你可以转到网站上下载服务,该服务可让你直接将大文件下载到谷歌云端硬盘。...人们通常倾向于忽略 OAuth 应用程序请求权限。 在你配置 OpenID 提供方没有帐户用户将无法访问你应用程序。最好方法是同时实现多种途径。...一些基本经验法则: 对于利用服务端模板 Web 应用程序,通过用户名密码进行基于会话身份验证通常是最合适。你也可以添加 OAuth OpenID

3.8K30

Python 学习入门(15)—— Tornado

协同工作 auth - 第三方认证实现(包括 Google OpenID/OAuthFacebook Platform、Yahoo BBAuth、FriendFeed OpenID/OAuth、Twitter...OAuth) locale - 针对本地化翻译支持 options - 命令行配置文件解析工具,针对服务器环境做了优化 底层模块 httpserver - 服务于 web 模块一个非常简单...然而如果 你需要同时支持 cookie 非 cookie 认证方式,那么只要当前请求是通过 cookie 进行认证,你就应该对其使用 XSRF 保护机制,这一点至关重要。...Locale 名称( en_US)可以 通过 locale.name 这个变量访问到,你可以使用 locale.translate 来进行本地化 翻译。...我们使用 Apache Benchmark (ab),在另外一台机器使用了如下指令进行负载测试: ab -n 100000 -c 25 http://10.0.1.x/ 在 AMD Opteron 2.4GHz

2K50

如何正确集成社交登录

图片来自 Shutterstock Lenka Horavova 。 提供数字服务组织最常使用 OAuth 2.0 OpenID Connect 来保护其应用程序 API 。...它们被设计用于从社交 Provider (Facebook帖子)获取用户资源访问。 因此,如果开发人员尝试使用将访问令牌发送到 API 标准 OAuth 2.0 行为,可能无法确保请求安全性。...这更接近标准 OAuth OpenID Connect 工作方式。自主实现可能被称为令牌服务,如下图所示。...其角色将是向客户端颁发访问令牌,然后可以发送到组织 API : 整体,安全解决方案形状现在走在更好轨道上。然而,与完整 OAuth 解决方案相比,存在一些限制。...使用授权服务器时,应用程序组件不再直接与社交登录 Provider 集成。 相反,每个应用程序实现一个代码流,只与授权服务器进行交互。该机制支持任何可能身份验证类型,包括 MFA 完全定制方法。

10010

开源鉴权新体验:多功能框架助您构建安全应用

它们支持各种身份验证协议,OAuth2.0、SAMLOpenID Connect,还具备单点登录(SSO)、分布式会话管理权限控制等功能。...( JAAS、LDAP、RDBMS 等) 受信任第三方认证 ( Facebook、Twitter 等) 授权功能包括 ABAC、Time/Date REST 以及 Internet2's Grouper..., LDAP、CAS 等 buzzfeed/sso[5] Stars: 3.0k License: MIT sso 是 BuzzFeed 开发身份验证授权系统,旨在为员工使用许多内部 Web...它依赖于 Google 作为其权威 OAuth2 提供者,并根据特定电子邮件域对用户进行身份验证。可以基于 Google 组成员资格要求进一步授权每个上游服务。...通过使用 SSO,在登录到一个网站后,您将自动在所有关联网站上进行身份验证。这些网站不需要共享顶级域名。 SSO 允许用户只需一次登录即可访问多个相关网站。

39710
领券