当前位置: 首页 > 知识库问答 >
问题:

Python从API/Oauth身份验证获取信息

归俊杰
2023-03-14

这是我第一次尝试使用API,API被称为OPS。我希望在python代码中使用API(OAuth 2)获取信息。

资源URL为:http://ops.epo.org/3.2/rest-services/register/{publication}/{EPODOC}/{EP2814089}/biblio

我还收到了:

消费密钥: O220VlTQqA修改fiedsf0YeqgM6c

消费者秘密密钥:swW修改3edjORU

留档指出:

OPS使用OAuth框架进行身份验证和授权。此时,使用使用者密钥和使用者机密仅支持“客户端凭据”流。

具体步骤如下:

步骤1:客户端将消费者密钥和消费者秘密转换为Base64Encode(消费者密钥:消费者秘密)。这应该使用开发客户端应用程序所使用的语言以编程方式完成。在本示例中,使用了一个公共网站来执行此转换。通过输入冒号分隔的客户端凭据,生成编码响应。然后将此响应用于基本身份验证。

步骤2:客户端使用基本身份验证请求访问令牌,通过加密的HTTPS连接提供其使用者密钥和使用者机密,并使用Base64编码:

OPS使用基本身份验证方法对在授权标头中传递的客户端凭据进行身份验证。如果凭据有效,OPS将使用有效的访问令牌进行响应。

步骤3:客户端通过加密的HTTPS连接,使用授权头中的访问令牌(承载令牌)访问OPS资源

我尝试了一些带有请求的代码示例,但直到现在,都没有成功。

共有2个答案

葛阳
2023-03-14

当使用前面的响应时,我可以获得一个令牌。(非常感谢您的回答)

所以我试着:

myUrl = 'http://ops.epo.org/3.2/rest-services/register/publication/EPODOC/EP2814089/biblio'

header = {'PRIVATE-TOKEN': myToken}
response = requests.get(myUrl, headers=header)
print(response.text)

我终于找到了一个专门的图书馆来做这项工作:

EPO操作库

但我还是不知道怎么一个人做。。。

黄俊雄
2023-03-14

OAuth2 RFC-6749中描述了客户端凭据流。客户机id和密码在RFC-7617中描述的基本身份验证方案中进行base64编码

您应该能够使用Python代码获取令牌,如:

import requests
import base64

url = 'https://ops.epo.org/3.2/auth/accesstoken'
data = {"grant_type": "client_credentials"}

creds = base64.b64encode("O220VlTQqAmodifiedsf0YeqgM6c:swWmodified3edjORU".encode())
headers = {'Authorization': 'Basic ' + creds.decode('UTF-8'), 'Content-Type': 'application/x-www-form-urlencoded'}

response = requests.post(url, headers=headers, data=data)

access_token = response.json()["access_token"]
 类似资料:
  • OAuth术语已经困扰我很久了。OAuth授权是像一些人建议的那样,还是认证? 如果我错了,请纠正我,但我一直认为授权是允许某人访问某个资源的行为,而OAuth似乎没有任何实际允许用户访问给定资源的实现。OAuth实现所讨论的都是为用户提供一个令牌(签名的,有时是加密的)。然后,每次调用都会将该令牌传递到后端服务endpoint,在后端服务endpoint上检查该令牌的有效性,这也不是OAuth的

  • 问题内容: 我正在开发一个RailsWeb应用程序,该应用程序还为移动设备提供了基于JSON的API。移动客户端应首先通过(电子邮件/通过)获得令牌,然后客户端将使用该令牌进行后续的API调用。 我对Devise相当陌生,我正在寻找一个Devise API外观,并希望它返回true / false,然后基于此,我将创建并返回令牌或返回拒绝消息。但似乎Devise没有提供类似的信息。 我知道Devi

  • 问题内容: 几个不同的问题和一些不同的教程中都涉及到了这一点,但是我所遇到的所有以前的资源并没有完全解决问题。 简而言之,我需要 通过POST从登录到 为用户提供提供路由的“已登录” GUI /组件状态 用户注销/注销时能够“更新” UI。 这是最令人沮丧的 保护我的路由以检查身份验证状态(他们是否需要),并将用户相应地重定向到登录页面 我的问题是 每次导航到另一个页面时,我都需要打电话以确定用户

  • 我是新的(护照)在laravel。是否有可能使用 即使使用了laravel内置身份验证?

  • 我正在尝试使用Facebook凭据实现网站登录。当我在Facebook小部件上按“取消”或“确定”时,我会看到不同的反应。当我按Cancel时,我看到以下内容 这是可预测的。但是当我按OK时,我看到另一个错误。 我在本地运行的网站Ubuntu 14.04 apache Web服务器与80端口。我怀疑错误的Facebook应用程序设置,但不知道调试什么。 此外,我可以提到推特登录也在相同的设置下工作

  • 我正在开发一个带有两步身份验证的Symfony API应用程序。第一步是带有用户名和密码的表单,第二步是带有SMS服务的OTP。在json_login成功之后,json_login身份验证器必须创建jwt。因为,我使用令牌而不是PHP会话。它是通过选项在security.yaml文件中配置的。 利用Symfony框架可以制作多种不同的身份验证器和防火墙。在第一步(json_login)中,对用户进