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

授权令牌: Django后端的OAuth,前端调用第三方API。这是个坏主意吗?

基础概念

授权令牌(Authorization Token):在OAuth协议中,授权令牌是由授权服务器颁发的,用于客户端访问资源服务器上的受保护资源的一种凭证。它通常包含访问权限和有效期等信息。

Django:是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。

OAuth:是一种开放标准,用于授权第三方应用访问用户在另一服务上存储的资源,而无需将用户名和密码提供给第三方应用。

优势

  1. 安全性:OAuth通过令牌而不是用户名和密码来访问资源,减少了敏感信息的泄露风险。
  2. 灵活性:用户可以授予第三方应用有限的访问权限,而不是完全控制其账户。
  3. 标准化:OAuth是一个广泛接受的标准,许多大型服务提供商都支持它。

类型

  1. 访问令牌(Access Token):用于访问资源服务器上的受保护资源。
  2. 刷新令牌(Refresh Token):用于在访问令牌过期后获取新的访问令牌。

应用场景

  • 用户使用第三方应用(如社交网站)登录另一个服务(如游戏应用)。
  • 移动应用需要访问用户的云存储数据。

问题分析

前端调用第三方API使用Django后端的OAuth是否是个坏主意?

这取决于具体的应用场景和设计考虑。以下是一些可能的问题和解决方案:

可能遇到的问题

  1. 安全性问题:前端直接调用第三方API可能会暴露授权令牌,增加被截获的风险。
  2. 跨域问题:前端和后端可能部署在不同的域名下,导致跨域请求问题。
  3. 维护复杂性:前后端分离增加了系统的复杂性和维护成本。

解决方案

  1. 安全性
    • 使用HTTPS来加密通信,防止令牌在传输过程中被截获。
    • 在后端进行严格的权限验证和令牌管理。
  • 跨域问题
    • 配置CORS(跨域资源共享),允许前端域名访问后端API。
    • 使用反向代理服务器来处理跨域请求。
  • 维护复杂性
    • 使用API网关来统一管理和路由请求,简化前后端的交互。
    • 使用OAuth 2.0的客户端凭证授权流程,减少前端对令牌的管理。

示例代码

以下是一个简单的Django后端OAuth实现示例:

代码语言:txt
复制
# settings.py
INSTALLED_APPS = [
    ...
    'oauth2_provider',
]

OAUTH2_PROVIDER = {
    'ACCESS_TOKEN_EXPIRE_SECONDS': 3600,
}

# views.py
from oauth2_provider.views.generic import ProtectedResourceView
from django.http import JsonResponse

class MyProtectedView(ProtectedResourceView):
    def get(self, request, *args, **kwargs):
        return JsonResponse({'message': 'This is a protected resource'})

# urls.py
from django.urls import path
from .views import MyProtectedView

urlpatterns = [
    path('protected/', MyProtectedView.as_view(), name='protected'),
]

参考链接

通过以上措施,可以有效地解决前端调用第三方API使用Django后端的OAuth可能遇到的问题,确保系统的安全性和可维护性。

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

相关·内容

【全栈修炼】396- OAuth2 修炼宝典

一、OAuth 概念 开放授权OAuth)是一开放标准,允许用户让第三方应用访问该用户在某一网站上存储私密资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。...—— 维基百科 严格来说,OAuth2 不是一标准协议,而是一安全授权框架。其详细描述系统中不同角色,用户,服务前端应用(如 API )以及客户端(如网站或APP)之间如何实现相互认证。...四、OAuth2 四种授权模式 通过前面描述,可以知道OAuth 核心就是向第三方应用颁发令牌OAuth 2.0 规定了四种获得令牌流程。你可以选择最适合自己那一种,向第三方应用颁发令牌。...这是为了防止令牌被滥用,没有备案过第三方应用,是不会拿到令牌。 1. 授权码(authorization code) 即第三方应用先申请一授权码,然后再用该码获取令牌。...适用于有后端 Web 应用,授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器通信都在后端完成。这样后端分离,可以避免令牌泄漏。 这种方式也是最常用流程,安全性最高。

74930

【全栈修炼】OAuth2 修炼宝典

Cover-OAuth2.png ## 一、OAuth 概念 > 开放授权OAuth)是一开放标准,允许用户让第三方应用访问该用户在某一网站上存储私密资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用...—— 维基百科 严格来说,OAuth2 不是一标准协议,而**是一安全授权框架**。...## 四、OAuth2 四种授权模式 通过前面描述,可以知道**OAuth 核心就是向第三方应用颁发令牌。** OAuth 2.0 规定了四种获得令牌流程。...这是为了防止令牌被滥用,没有备案过第三方应用,是不会拿到令牌。 ### 1. 授权码(authorization code) 即**第三方应用先申请一授权码,然后再用该码获取令牌**。...适用于**有后端 Web 应用**,授权码通过前端传送,**令牌则是储存在后端**,而且所有与资源服务器通信都在后端完成。这样后端分离,可以避免令牌泄漏。

79520
  • OAuth 2.0 四种方式

    也就是说,OAuth 2.0 规定了四种获得令牌流程。你可以选择最适合自己那一种,向第三方应用颁发令牌。下面就是这四种授权方式。...这是为了防止令牌被滥用,没有备案过第三方应用,是不会拿到令牌。...第一种授权方式:授权授权码(authorization code)方式,指的是第三方应用先申请一授权码,然后再用该码获取令牌。...这种方式是最常用流程,安全性也最高,它适用于那些有后端 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器通信都在后端完成。这样后端分离,可以避免令牌泄漏。...下一篇文章会编写一真实 Demo,演示如何通过 OAuth 2.0 向 GitHub API 申请令牌,然后再用令牌获取数据。

    55930

    微服务架构之「 访问安全 」

    (图片来自网络) 如图,这是一种采用基于令牌Token授权方式。...例如:你开发了一视频网站,可以采用第三方微信登陆,那么只要用户在微信上对这个网站授权了,那这个网站就可以在无需用户密码情况下获取用户在微信上头像。 OAuth2.0 流程如下图: ?...这也是目前最为常用一种模式,安全性比较高,适用于我们常用后端分离项目。通过前端跳转方式去访问 授权服务器 获取授权码,然后后端再用这个授权码访问 授权服务器 以获取 访问令牌。 ?...,客户端后端服务(图中Client)携带授权码(Authorization Code)去访问 授权服务器,然后获得正式 访问令牌(Access Token) 页面的前端后端分别做不同逻辑,前端接触不到...简化式(Implicit) 简化模式是在项目是一前端应用,在没有后端情况下,采用一种模式。 因为这种方式令牌是直接存在前端,所以非常不安全,因此令牌有限期设置就不能太长。 ?

    1.1K20

    涂鸦基于OAuth2在开发者平台上探索与实践

    前言 开发授权(OAuth2)是一开放标准,允许用户让第三方应用访问该用户在某一网站上存储私密资料(如照片、视频、联系人列表),而无需将用户名和密码提供给第三方应用。...OAuth2允许用户提供一令牌,而不是用户名和密码来访问他们存放在特定服务提供者数据。...这种方式是最常用流程,安全性也最高,它适用于那些有后端 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器通信都在后端完成。这样后端分离,可以避免令牌泄漏。...隐藏式(implicit) 有些 Web 应用是纯前端应用,没有后端。这时就不能用上面的方式了,必须将令牌储存在前端。RFC 6749 就规定了第二种方式,允许直接向前端颁发令牌。...授权码模式(显式授权)开发期待中 在 云开发平台 应用云 API 密钥后,开发人员可以基于涂鸦 API 接口规范调用涂鸦开放接口,以获取授权资源数据。

    92810

    全面详解互联网企业开放API “守护神”

    为了解决这个问题,当时一些开发人员尝试发明一种协议,可以允许用户对API访问授权。期望是让第三方应用只要获得用户授权并得访问令牌,就能使用这个令牌来访问API。...Oauth组件间通信包括前端通信和后端通信,前端通信就是组件之间需要交互信息数据在浏览器里面流转,后端通信就是组件之间需要交互数据信息通过WEB SERVER之间流转。...实际上只有标准场景下Oauth2流程才会既使用前端通信又使用后端通信,这点在介绍非标准场景下Oauth使用时候也会去分析,大家先记下来。...实际上这个授权是让第三方小程序能够获取到微信APP里面的功能以及手机本身功能,比如拍照、录音等。如果是需要发起HTTP请求调用API是需要通过上文说客户端凭据方式。...总结 开放平台基础技术需要 “两条腿” 能够跑起来,这两条腿分别是网关和Oauth。网关可以让内部API被外部调用Oauth可以保护这些被调用APIOauth是一种协议,也是一种工具。

    66240

    全面详解互联网企业开放API “守护神”

    为了解决这个问题,当时一些开发人员尝试发明一种协议,可以允许用户对API访问授权。期望是让第三方应用只要获得用户授权并得访问令牌,就能使用这个令牌来访问API。...Oauth组件间通信包括前端通信和后端通信,前端通信就是组件之间需要交互信息数据在浏览器里面流转,后端通信就是组件之间需要交互数据信息通过WEB SERVER之间流转。...实际上只有标准场景下Oauth2流程才会既使用前端通信又使用后端通信,这点在介绍非标准场景下Oauth使用时候也会去分析,大家先记下来。...实际上这个授权是让第三方小程序能够获取到微信APP里面的功能以及手机本身功能,比如拍照、录音等。如果是需要发起HTTP请求调用API是需要通过上文说客户端凭据方式。...总结 开放平台基础技术需要 “两条腿” 能够跑起来,这两条腿分别是网关和Oauth。网关可以让内部API被外部调用Oauth可以保护这些被调用APIOauth是一种协议,也是一种工具。

    75840

    微服务架构之「 访问安全 」

    (图片来自网络) 如图,这是一种采用基于令牌Token授权方式。...例如:你开发了一视频网站,可以采用第三方微信登陆,那么只要用户在微信上对这个网站授权了,那这个网站就可以在无需用户密码情况下获取用户在微信上头像。 OAuth2.0 流程如下图: ?...这也是目前最为常用一种模式,安全性比较高,适用于我们常用后端分离项目。通过前端跳转方式去访问 授权服务器 获取授权码,然后后端再用这个授权码访问 授权服务器 以获取 访问令牌。 ?...,客户端后端服务(图中Client)携带授权码(Authorization Code)去访问 授权服务器,然后获得正式 访问令牌(Access Token) 页面的前端后端分别做不同逻辑,前端接触不到...简化式(Implicit) 简化模式是在项目是一前端应用,在没有后端情况下,采用一种模式。 因为这种方式令牌是直接存在前端,所以非常不安全,因此令牌有限期设置就不能太长。 ?

    94510

    OAuth2.0从入门到出道

    页面跳转到掘金前端页面并附带上授权码 掘金前端授权码请求掘金后端 掘金后端调用微信OpenApi请求访问令牌 微信授权服务校验授权码及掘金请求信息,并响应访问令牌 掘金后端拿到访问令牌,并通过访问令牌获取用户信息...第十点(访问令牌) 微信根据上述三参数,校验第三方是否存在,appSecret是否正确,授权码是否正确来生成访问令牌。...只不过大家要注意是,OAuth2和JWT其实并没有绝对依赖关系,不要一开始就把二者混为一谈,否则后续很容易让自己云里雾里。 其实很多人不理解,为什么要弄一授权码还弄一访问令牌呢?...而如果有刷新令牌,那么第三方软件可以再访问令牌过期前,在后端静默申请一访问令牌,而整个流程是用户无感知。...隐式许可(简单类型) 这种类型其实应用非常少,主要是用于第三方软件只有前端,没有后端情况。因为只有前端,所以第三方软件直接嵌入浏览器中,通过浏览器与授权服务交互。

    80420

    从五方面入手,保障微服务应用安全

    微服务架构中,业务系统不是业务逻辑概念,一业务系统由一或多个应用(微服务)组成。 网关 即API Gateway 是客户端访问应用入口,后端应用API门户。...微服务架构中Web应用一般采用前后端分离模式,前端为基于浏览器访问前端应用,网关作为应用程序入口,此时网关本身可以代表OAuth客户端身份访问服务提供端应用功能接口。...本场景以微服务架构中常见后端分离Web应用作为示例,前端是单页应用,网关作为Web后台是服务提供端应用功能入口,也可作为OAuth2.0客户端,让前端Web应用能借助网关实现授权码交换。...为了避免用户、客户端凭证泄漏第三方(除IAM、访问者之外为第三方),身份认证类API或UI建议由IAM系统直接开放给访问者调用进行身份认证。...2.访问授权 通过认证API客户端能够访问网关开发所有API?通过认证用户能够调用所有API?通过认证用户允许调用修改订单接口,那么他能修改所有人订单

    2.7K20

    Spring Security入门4:各类软件技术架构中,如何保证安全性?

    这种模式下,一旦后端进行修改,前端就可能需要跟着变动,增加了开发和维护复杂性。 而在前后端分离架构中,前端后端各自独立开发和运行,两者之间通过定义好API进行数据交互。...三、了解 OAuth 2 框架 OAuth 2.0是一开放标准,它允许用户授权第三方移动和网页应用以代表自己访问和操作存储在其他服务提供商上数据,而无需分享凭据(例如用户名和密码)。...OAuth 2.0是一授权框架,允许第三方应用在所有者许可下访问其资源,而无需向第三方应用公开用户身份凭据。 OAuth 2.0定义了四种授权方式,即授权码模式,简化模式,密码模式和客户端模式。...如果需要用户明确授权第三方应用访问其数据,授权服务器负责生成并展示这个授权界面,让用户能够理解并决定是否授权。 一旦客户端请求被批准,授权服务器会发放访问令牌给客户端。...所以,在 OAuth2.0 授权流程中,资源服务器负责保护用户资源,并在适当授权下,将这些资源提供给第三方应用。

    28430

    SpringBoot学习笔记(十五:OAuth2 )

    3、OAuth 授权流程 这是 个大致流程,因为 OAuth2 中有 种不同授权模式,每种授权模式授权流程又会有差异,基本流程如下: 客户端(第三方应用)向资源所有者请求授权。...4.1、授权授权码(authorization code)方式,指的是第三方应用先申请一授权码,然后再用该码获取令牌。 这种方式是最常用流程,安全性也最高,它适用于那些有后端 Web 应用。...授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器通信都在后端完成。这样后端分离,可以避免令牌泄漏。...4.2、隐藏式 有些 Web 应用是纯前端应用,没有后端。这时就不能用上面的方式了,必须将令牌储存在前端。RFC 6749 就规定了第二种方式,允许直接向前端颁发令牌。...第二步,B 网站验证通过以后,直接返回令牌。 这种方式给出令牌,是针对第三方应用,而不是针对用户,即有可能多个用户共享同一令牌

    90220

    大话Oauth2.0(二)、标准流程下Oauth2组件及通信

    API以便接收第三方软件访问请求。...Oauth组件间通信包括前端通信和后端通信,前端通信就是组件之间需要交互信息数据在浏览器里面流转,后端通信就是组件之间需要交互数据信息通过WEB SERVER之间流转。...实际上只有标准场景下Oauth2流程才会既使用前端通信又使用后端通信,这点在介绍非标准场景下Oauth使用时候也会去分析,大家先记下来。...2.2、第三方软件和资源服务之间通信 在第三方软件获取到访问令牌之后通过WEB API方式请求资源服务器,来访问资源所有者数据。...实现这个目的可以让两服务共享一数据存储,也可以让授权服务器提供一RPC接口供资源服务器来调用。交互通信如下图所示。 ?

    1.6K50

    使用Cookie和Token处理程序保护单页应用程序

    此外,SPA 通常依赖于大量与应用程序 通过 API 连接 第三方数据。大量第三方连接会造成双重问题。 首先,开发人员无法控制由其他从业人员和组织创建 API 中内置安全措施。...在 SPA 配置中,用户会话无法保存在 Cookie 中,因为没有后端数据存储。相反,可以使用访问令牌代表经过身份验证用户调用 API。...在此设置中,作为后端组件托管 OAuth 代理位于 SPA 和授权服务器之间。...OAuth 代理处理 SPA OAuth 流程,并且不会向 SPA 发放令牌,而是会发放一安全 HTTP 仅限 Cookie,SPA 可以使用该 Cookie 访问其后端 API 和微服务。...这样,网站和应用程序前端开发人员和经理可以最大限度地提高用户体验,而不会受到后端授权限制。

    13210

    深入理解OAuth 2.0:原理、流程与实践

    OAuth 2.0 允许用户授权第三方应用访问他们在另一服务提供方上数据,而无需分享他们凭据(如用户名、密码)。 2....如果验证成功,认证服务器将访问令牌返回给客户端应用。 4. 客户端模式(Client Credentials) 客户端模式主要用于没有用户参与后端服务(如开放API场景)。...为了防止这种情况,刷新令牌应该只在后端服务中使用,不应该暴露给前端应用。此外,刷新令牌也应该在所有传输和存储过程中进行加密保护。...为了防止CSRF攻击,OAuth 2.0授权请求可以包含一state参数,这是随机生成字符串,用于在授权服务器重定向回客户端时验证请求合法性。...这不仅提高了用户体验,也降低了用户忘记密码风险。 2. 使用OAuth 2.0进行API授权 OAuth 2.0也常用于API授权

    5.5K32

    OAuth2.0协议详解

    授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器通信都在后端完成。这样后端分离,可以避免令牌泄漏。...: https://a.com/callback#token=ACCESS_TOKEN 注意,令牌位置是 URL 锚点(fragment),而不是查询字符串(querystring),这是因为 OAuth...B网站验证通过后,直接返回令牌。这种方式给出令牌,是针对第三方应用,而不是针对用户,即有可能多个用户共享同一令牌。 6....令牌使用 A网站拿到令牌后,就可以携带令牌通过B网站api接口向B网站API请求数据了。具体做法是在请求头信息,加上一Authorization字段,令牌就放在这个字段里面。...更新令牌 用于更新accessToken令牌有效期到了,如果让用户重新走一遍上面的流程,再申请一令牌,很可能体验不好,而且也没有必要。OAuth 2.0 允许用户自动更新令牌

    1.5K10

    ​Harbor制品仓库访问控制(1)

    OAuth 2.0 是一授权协议,它引入了一授权层以便区分出两种不同角色:资源所有者和客户端,客户端从资源服务器处获得令牌可替代资源所有者凭证来访问被保护资源。...OAuth 2.0 实质就是客户端从第三方应用中获得令牌,它规定了4种获得令牌方式: ◎授权码(Authorization Code)方式; ◎隐藏式(Implicit); ◎密码式(Password...授权码方式指第三方应用先获取一授权码,然后使用该授权码换取令牌这是最常见流程,安全性也最高,适合同时具有前端后端应用,授权码被传递给前端令牌则被存储在后端。...(本文为公众号:亨利笔记 原创文章) 隐藏式适合只有前端没有后端应用,因为在前端保留授权码不安全,所以这种方式跳过了授权码这个步骤,由 OAuth 2.0 授权层直接向前端颁发令牌。...客户端凭证方式适用于应用客户端获取令牌,使用是应用客户端ID和密码,与用户凭证无关,适合客户端调用第三方API服务。

    1.7K30

    Spring OAuth2

    ,是一消费者,包括前端 demo-h5 和后端 demo- service。...有人说 OAuth 2.0 规范提出 PKCE(Proof Key for Code Exchange by OAuth Public Clients)协议可以解决这个问题,这是错误观点,PKCE...打个比方,微服务架构下 B2C 商城系统,基本组成有前端 H5、无线端 APP、API 网关、认证授权服务、订单服务、商品服务等,由于上述所有组成部分都同属于一套 OAuth2 体系,且都由相同团队开发...这样就以网关为边界,划分出了内部服务和外部服务,这就是所说相对概念。 那么,电商系统前端 H5、无线端 APP 在认证和授权阶段,采用授权码模式和采用密码模式,有什么差别?...授权码模式有一层用户确认授权动作,从而避免泄露用户名和密码给第三方应用,除此之外,两者之间几乎提供了相同安全流程。这里所指第三方应用不正是前端 H5 和无线端 APP

    2.3K00

    图文+代码讲解带你攻克OAuth 2.0授权流程三座大山

    为保护这种场景下 APIOAuth 2.0 提供了资源拥有者凭据许可类型。 资源拥有者凭据,即用户凭据:用户名和密码。这么简陋方案,咋敢用?...但若每次xx都拿我用户名和密码来通过调用 API 访问我号里文章数据,甚至其他敏感信息,无疑增加用户名和密码被攻击风险。...2 客户端凭据许可 若无明确资源拥有者,即xx访问了一无需用户me授权数据,比如 获取公众号LOGO地址,该数据不属任何第三方用户 三方软件访问平台提供省份信息,省份信息也不属任何一第三方用户...授权过程没有资源拥有者me参与,小兔软件后端服务可随时发access_token请求,所以无需刷新令牌。...隐式许可是唯一在前端通信中要求返回access_token流程。 ? 生成acccess_token值,通过前端通信返回给第三方软件小兔。 ? 授权类型选型 ?

    43620

    【One by One系列】IdentityServer4(一)OAuth2.0与OpenID Connect 1.0

    1.引言 1.1 实际遇到问题 在之前一单体web系统中,采用是前后端分离,前端是Vue 2.0,后端使用ASP.NET Web Api 2.0提供后台服务,登录模块采用了JWT(JSON WEB...那时会遇到一问题,前端并没有mock开发,而是连接后端测试环境开发,前端在开发调试时,后端同步发布最新接口,再加上IIS老版本发布web服务,会有一初次访问非常慢问题,这时前端就会炸锅,“后端挂了...第三方应用程序需要知道当前操作用户身份,就需要身份验证,这时OAuth协议应运而生,OAuth2.0引入了一授权层,分离两种不同角色: 客户端 资源所有者(用户) 只有用户同意以后,服务器才能向客户端颁发令牌...-client credentials 不管哪一种授权方式,第三方应用申请令牌之前,都需要像微信公众号开发那样,必须先到系统备案,说明自己身份,然后会拿到两身份识别码:客户端 ID(client ID...这是为了防止令牌被滥用,没有备案过第三方应用,是不会也不可能拿到令牌

    1.5K10
    领券