2015-05-29 80 views
0

對不起,這個基本問題仍然在Python的學習階段。我正在編寫一個Python腳本,該腳本會創建一個將包含基本身份驗證標頭的Rest調用。在這個例子中,用戶是luke,密碼是mypasswd。由於密碼是以明文形式書寫的,有沒有辦法在腳本中加密密碼或以更安全的方式在腳本之外移動身份驗證?在Python中使用Rest時,推薦的認證方式是什麼?在Python中休息呼叫認證

import urllib2 
import base64 
import xml.etree.ElementTree as ET 

weblink = "https://192.168.1.1/user" 
auth = base64.b64encode("luke:mypasswd") 
headers = {"Authorization":"Basic " + auth} 
+0

感謝博爾哈,但我的問題是更多關於如何以安全的方式使用身份驗證?因爲我已經以明文形式寫入 – user3331975

+0

這取決於*服務器*所接受的內容。它只提供基本身份驗證? – 2015-05-29 08:52:31

回答

1

你必須把證書放在某個地方,所以我認爲你擔心你的腳本分發證書。這可以通過

1來解決)使用,你會保存憑證(https://docs.python.org/2/library/configparser.html)一個配置文件

2)在命令行

3)通過環境變量指定他們指定他們。

+0

我認爲這個問題不是關於如何將憑據獲取到客戶端腳本中。它更多的是基本身份驗證使用未加密的Base64。 – 2015-05-29 08:55:46

0

我的建議是使用請求包(pip install requests)。 關於密碼的安全性,您可以使用全局變量或具有足夠權限的某些文本文件。 在Linux終端或.bashrc文件:出口密碼MyPassWd =「*******」

import os 
import base64 
import requests 
weblink = "https://192.168.1.1/user" 
mypasswd = os.getenv("mypasswd") 
auth = base64.b64encode("luke:"+str(mypasswd)) 
headers = {"Authorization":"Basic " + auth} 
#In headers you can have some more properties as Content-Type or so on... 
#next would be to call the http method you need(GET,POST,PUT,DELETE) 
resp = requests.get(weblink,headers=headers) 
print resp.text 
print resp.status_code 
+0

所以,如果你使用的是Linux,你可以在終端或.bashrc文件做到這一點: 出口密碼MyPassWd =「東西」 ,比蟒蛇: 進口OS 密碼MyPassWd = os.getenv(「密碼MyPassWd」) –