PyJWT,需要 PEM 格式的密钥
PyJWT, Expecting a PEM-formatted key
我已经从图层复制粘贴了这段代码:
https://github.com/layerhq/support/blob/master/identity-services-samples/python/controller.py
另外两个人告诉我 运行 它在 mac machines 上成功了。我正在使用 windows 7,我收到 TypeError: Expecting a PEM-formatted key when 运行 the code:
#Read RSA key
root = os.path.dirname("__file__")
with open(os.path.join(root, RSA_KEY_PATH), 'r') as rsa_priv_file:
#Not sure about adding the utf-8 AT ALL
priv_rsakey = RSA.importKey(rsa_priv_file.read())
#Create identity token
#Make sure you have PyJWT and PyCrypto libraries installed and imported
identityToken = jwt.encode(
payload={
"iss": PROVIDER_ID, # String - The Provider ID found in the Layer Dashboard
"prn": user_id, # String - Provider's internal ID for the authenticating user
"iat": datetime.datetime.now(), # Integer - Time of Token Issuance in RFC 3339 seconds
"exp": datetime.datetime.utcnow() + datetime.timedelta(seconds=30), # Integer - Arbitrary Token Expiration in RFC 3339 seconds
"nce": nonce # The nonce obtained via the Layer client SDK.
},
key=priv_rsakey,
headers = {
"typ": "JWS", # String - Expresses a MIME Type of application/JWS
"alg": "RS256", # String - Expresses the type of algorithm used to sign the token, must be RS256
"cty": "layer-eit;v=1", # String - Express a Content Type of Layer External Identity Token, version 1
"kid": KEY_ID # String - Private Key associated with "layer.pem", found in the Layer Dashboard
},
algorithm="RS256"
)
print identityToken
我不知道我的PEM格式的密钥应该如何,但如下(我在发布前手动更改了密钥):
-----BEGIN RSA PRIVATE KEY----- MIICWwIBAAKBgQCWjLl4Hw8PLto2wGGxrpJ0afHQDX2iJ/xqNXyybgG0GxZI344u
HXxn/bRzH4Z39pw3vGKrvd21hyln5/qaJGoCSb7QHAtdz8pfNF3t96DBcDh2aDMe
+8W/4mZqiDi2zNqxAnmuv6vSKnU3UyqFpuPCdXFiA8Gt8OqHHLks8MYYjwIDAQAB AoGAII9i9YXSHfiGHV1SQ7l7102qjNK+HzoCr33N8FE2cRuCoFQpTfP2mg8W3ect
j/h4JN3LgVVZBA+tdtiptHi3rF1W4yNs4pO3xYLJZHoCdG5CjHoMzEf2VwixK6+f
8FCCNErG8yxCpcPDH8D0NjMFzJ0t1kwsBQ0w5iSvdY3qtLECQQDgQPVk6W79kNS9
gBoZAB71yJazQpCwJ2SLYj6aFNZDX1Jpg5GRoVOs59gl13UF+9AwJf5MCIMbqaly
T1/4aBa1AkEAq9y0DwSjNLl26XeBhWycQJZUu5lsJVqJcx2q0GsKGx5Ntei/48bD
ldi7ZXWdA6o4OOV2GpW1hX7vssPHBXBYswJAMGXUkDLRAWiAgWVkPIEKLYFdBNMY
5uuZh3tsh1R36ZJo9tyuTf/DT026GHCnkOMHy1xnxYEQyqeTKlh3HeVZAQJAIQYC
r1QTzEDLAaeOAsZQ6/Q3Cek4545TBgSwWuYGhhl3kznLDYiW8oc30xIbfqXJsd0d
qZQU0jcG9hG6f2gMEwJALHz0jXhpjo+UygUjdKbW/mfKRirSYiGLCYQHiNc4aaDe
omr9XLu9Hc6aI9RVGIFMnygaI9Ahu2mNkpj5UoaTTA==
-----END RSA PRIVATE KEY-----
我找不到任何解决我的问题的有效方法。
谁有想法?谢谢
变化:
priv_rsakey = RSA.importKey(rsa_priv_file.read())
至:
priv_rsakey = rsa_priv_file.read()
我已经从图层复制粘贴了这段代码:
https://github.com/layerhq/support/blob/master/identity-services-samples/python/controller.py
另外两个人告诉我 运行 它在 mac machines 上成功了。我正在使用 windows 7,我收到 TypeError: Expecting a PEM-formatted key when 运行 the code:
#Read RSA key
root = os.path.dirname("__file__")
with open(os.path.join(root, RSA_KEY_PATH), 'r') as rsa_priv_file:
#Not sure about adding the utf-8 AT ALL
priv_rsakey = RSA.importKey(rsa_priv_file.read())
#Create identity token
#Make sure you have PyJWT and PyCrypto libraries installed and imported
identityToken = jwt.encode(
payload={
"iss": PROVIDER_ID, # String - The Provider ID found in the Layer Dashboard
"prn": user_id, # String - Provider's internal ID for the authenticating user
"iat": datetime.datetime.now(), # Integer - Time of Token Issuance in RFC 3339 seconds
"exp": datetime.datetime.utcnow() + datetime.timedelta(seconds=30), # Integer - Arbitrary Token Expiration in RFC 3339 seconds
"nce": nonce # The nonce obtained via the Layer client SDK.
},
key=priv_rsakey,
headers = {
"typ": "JWS", # String - Expresses a MIME Type of application/JWS
"alg": "RS256", # String - Expresses the type of algorithm used to sign the token, must be RS256
"cty": "layer-eit;v=1", # String - Express a Content Type of Layer External Identity Token, version 1
"kid": KEY_ID # String - Private Key associated with "layer.pem", found in the Layer Dashboard
},
algorithm="RS256"
)
print identityToken
我不知道我的PEM格式的密钥应该如何,但如下(我在发布前手动更改了密钥):
-----BEGIN RSA PRIVATE KEY----- MIICWwIBAAKBgQCWjLl4Hw8PLto2wGGxrpJ0afHQDX2iJ/xqNXyybgG0GxZI344u HXxn/bRzH4Z39pw3vGKrvd21hyln5/qaJGoCSb7QHAtdz8pfNF3t96DBcDh2aDMe +8W/4mZqiDi2zNqxAnmuv6vSKnU3UyqFpuPCdXFiA8Gt8OqHHLks8MYYjwIDAQAB AoGAII9i9YXSHfiGHV1SQ7l7102qjNK+HzoCr33N8FE2cRuCoFQpTfP2mg8W3ect j/h4JN3LgVVZBA+tdtiptHi3rF1W4yNs4pO3xYLJZHoCdG5CjHoMzEf2VwixK6+f 8FCCNErG8yxCpcPDH8D0NjMFzJ0t1kwsBQ0w5iSvdY3qtLECQQDgQPVk6W79kNS9 gBoZAB71yJazQpCwJ2SLYj6aFNZDX1Jpg5GRoVOs59gl13UF+9AwJf5MCIMbqaly T1/4aBa1AkEAq9y0DwSjNLl26XeBhWycQJZUu5lsJVqJcx2q0GsKGx5Ntei/48bD ldi7ZXWdA6o4OOV2GpW1hX7vssPHBXBYswJAMGXUkDLRAWiAgWVkPIEKLYFdBNMY 5uuZh3tsh1R36ZJo9tyuTf/DT026GHCnkOMHy1xnxYEQyqeTKlh3HeVZAQJAIQYC r1QTzEDLAaeOAsZQ6/Q3Cek4545TBgSwWuYGhhl3kznLDYiW8oc30xIbfqXJsd0d qZQU0jcG9hG6f2gMEwJALHz0jXhpjo+UygUjdKbW/mfKRirSYiGLCYQHiNc4aaDe omr9XLu9Hc6aI9RVGIFMnygaI9Ahu2mNkpj5UoaTTA==
-----END RSA PRIVATE KEY-----
我找不到任何解决我的问题的有效方法。 谁有想法?谢谢
变化:
priv_rsakey = RSA.importKey(rsa_priv_file.read())
至:
priv_rsakey = rsa_priv_file.read()