【问题标题】:oAuth "Password was not given but private key is encrypted"oAuth“未提供密码,但私钥已加密”
【发布时间】:2019-04-06 16:54:26
【问题描述】:

我正在为 Jira 编写 OAuth。但我收到错误“未提供密码,但私钥已加密”。我也试图用 js 实现这个解决方案,但遗憾的是它没有用。现在我正在尝试使用 python。

我想调用 Jira Rest API,为此我需要 oAuth(以便通过代码创建 jira 票证)。

我的代码是:

import requests
from oauthlib.oauth1 import SIGNATURE_RSA
from requests_oauthlib import OAuth1Session
from jira.client import JIRA

def read(file_path):
    #""" Read a file and return it's contents. """
    with open(file_path) as f:
        return f.read()

# The Consumer Key created while setting up the "Incoming Authentication" in
# JIRA for the Application Link.
CONSUMER_KEY = ('myconsumerkey')

# The contents of the rsa.pem file generated (the private RSA key)
RSA_KEY = read('myfilelink')

# The URLs for the JIRA instance
JIRA_SERVER = 'myjiralink'
REQUEST_TOKEN_URL = JIRA_SERVER + '/plugins/servlet/oauth/request-token'
AUTHORIZE_URL = JIRA_SERVER + '/plugins/servlet/oauth/authorize'
ACCESS_TOKEN_URL = JIRA_SERVER + '/plugins/servlet/oauth/access-token'


# Step 1: Get a request token

oauth = OAuth1Session(CONSUMER_KEY, signature_type='auth_header', 
                      signature_method=SIGNATURE_RSA, rsa_key=RSA_KEY)
request_token = oauth.fetch_request_token(REQUEST_TOKEN_URL)

print("STEP 1: GET REQUEST TOKEN")
print("  oauth_token={}".format(request_token['oauth_token']))
print("  oauth_token_secret={}".format(request_token['oauth_token_secret']))
print("\n")


# Step 2: Get the end-user's authorization

print("STEP2: AUTHORIZATION")
print("  Visit to the following URL to provide authorization:")
print("  {}?oauth_token={}".format(AUTHORIZE_URL, request_token['oauth_token']))
print("\n")

while input("Press any key to continue..."):
    pass


# Step 3: Get the access token

access_token = oauth.fetch_access_token(ACCESS_TOKEN_URL)

print("STEP2: GET ACCESS TOKEN")
print("  oauth_token={}".format(access_token['oauth_token']))
print("  oauth_token_secret={}".format(access_token['oauth_token_secret']))
print("\n")


# Now you can use the access tokens with the JIRA client. Hooray!

jira = JIRA(options={'server': JIRA_SERVER}, oauth={
    'access_token': access_token['oauth_token'],
    'access_token_secret': access_token['oauth_token_secret'],
    'consumer_key': CONSUMER_KEY,
    'key_cert': RSA_KEY
})

# print all of the project keys just as an exmaple
for project in jira.projects():
    print(project.key)

【问题讨论】:

  • 请不要发送代码图像,来回输入所有内容需要更长的时间才能完全按照原来的方式输入。请使用格式正确的代码编辑您的帖子。
  • @ChristianKönig 对不起。我希望现在没事了
  • @NaruS 我编辑了它。我希望现在更好
  • 好多了@TeslaX

标签: python python-3.x oauth jira


【解决方案1】:

我解决了这个问题。问题是私钥受密码保护。我现在删除了保护并且它有效。

下一步是使用密码私钥进行身份验证,但这是另一个问题。我会将这个问题标记为已解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 2020-05-01
    • 2013-01-13
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    相关资源
    最近更新 更多