Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以将身份验证令牌存储在单独的文件中?_Python_Oauth2 - Fatal编程技术网

Python 是否可以将身份验证令牌存储在单独的文件中?

Python 是否可以将身份验证令牌存储在单独的文件中?,python,oauth2,Python,Oauth2,我正在使用python构建一个与RESTful api接口的命令行工具。API使用oauth2进行身份验证。而不是每次用户运行python工具时都请求访问令牌。我能否以某种方式存储access_令牌,以便在其使用寿命内使用它?如果是的话,那么它有多安全 您可以将访问令牌存储在用户桌面上的文件中 您可以使用存储设备来执行此操作。假设您使用的是oauth2client: # Reading credentials store = oauth2client.file.Storage(cred_path

我正在使用python构建一个与RESTful api接口的命令行工具。API使用oauth2进行身份验证。而不是每次用户运行python工具时都请求访问令牌。我能否以某种方式存储access_令牌,以便在其使用寿命内使用它?如果是的话,那么它有多安全

您可以将访问令牌存储在用户桌面上的文件中

您可以使用存储设备来执行此操作。假设您使用的是
oauth2client

# Reading credentials
store = oauth2client.file.Storage(cred_path)
credentials = store.get()

# Writing credentials
creds = client.AccessTokenCredentials(access_token, user_agent)
creds.access_token = access_token
creds.refresh_token = refresh_token
creds.client_id = client_id
creds.client_secret = client_secret

# For some reason it does not save all the credentials,
# so write them to a json file manually instead
with open(credential_path, "w") as f:
    f.write(creds.to_json)
在安全方面,我不会看到太多的威胁,因为这些访问令牌将在用户的桌面上。如果有人想要获得他们的访问令牌,他们需要在该时间段内具有对该文件的读取权限。但是,如果他们已经可以这样做了,那么他们很可能还可以使用您的脚本在每次对用户的访问令牌进行身份验证时向他们发送一份该令牌的副本。但是,请轻信我的话,因为我不是这方面的专业人士。看

信息安全堆栈交换中的一位成员确实谈到了这一点:

这些令牌允许访问有关用户的一些相当特权的信息

然而,这个问题是针对一个数据库的


总之,您可以将其保存在一个文件中。(但请恕我直言)

您想把它存放在服务区还是本地

由于您的工具与RESTful API接口,而RESTful API是无状态的,这意味着在对API的不同请求之间不存储任何信息,因此每次客户端访问任何REST端点时,实际上都需要提供访问令牌。我可能遗漏了您设计中的一些细节,但是访问令牌应该只用于授权,因为您的用户已经通过了身份验证,如果他有令牌的话。这就是为什么代币只在一定时间内有效,通常为1小时

因此,您需要通过使用cookie(web界面)或本地存储令牌(这就是您的意思)来提供状态。但是,每次用户登录到您的客户机时(验证用户并提供新的身份验证令牌),您都应该触发整个oauth流,否则您将无法利用oauth的好处