我一直在努力使用acquire_token_with_client_certificate函数检索令牌。无论我用于PEM编码的密钥/证书,我收到以下错误:
AdalError: Get Token request returned http error: 401 and server response: {"error":"invalid_client","error_description":"AADSTS70002: Error validating credentials. AADSTS50032: RSA key size 1024 is less than the minimum required 2048 bits.\r\nTrace ID: 32bf21de-e77a-4419-ab2b-cdc3a9343200\r\nCorrelation ID: 291050ae-0e86-4d09-bd62-7cfc53750db9\r\nTimestamp: 2018-04-16 13:51:50Z","error_codes":[70002,50032],"timestamp":"2018-04-16 13:51:50Z","trace_id":"32bf21de-e77a-4419-ab2b-cdc3a9343200","correlation_id":"291050ae-0e86-4d09-bd62-7cfc53750db9"}
我的代码如下:
def get_private_key(filename):
with open(filename, 'r') as pem_file:
private_pem = pem_file.read()
return private_pem
context = adal.AuthenticationContext(authority_url, api_version=None)
key = get_private_key('../keys/fullkey.pem')
token = context.acquire_token_with_client_certificate(
resource_id,
client_id,
key,
thumbprint_new)
print token
无论我指向哪个.pem文件(我在尝试调试时生成了多个),我仍然会收到同样的错误。
非常感谢任何帮助!
谢谢你, 麦克
答案 0 :(得分:1)
收到此错误是因为您提供的RSA密钥大小小于2048.您可以通过将密钥大小增加到2048位或更多来解决此问题。
这些是生成私钥文件和证书的步骤,可以在Adal python中用于身份验证。
openssl genrsa -out server.pem 2048
openssl req -new -key server.pem -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.pem -out server.crt
您必须在应用程序设置中的Azure门户上上传此证书(server.crt
)。保存此证书后,门户网站将为您提供获取令牌调用中所需的此证书的指纹。密钥将是您在第一步中生成的server.pem
密钥。