Flask 为什么我的服务器抱怨';错误的授权头';?

Flask 为什么我的服务器抱怨';错误的授权头';?,flask,python-requests,boto3,amazon-cognito,Flask,Python Requests,Boto3,Amazon Cognito,我很难让我的客户机和服务器通过一个简单的AWS Cognito授权来同意令牌应该是什么样子 我的客户使用Bot3和请求。我在标题中传递了授权,我在超过一半的教程中看到了这一点,但我也看到了auth参数的使用,我没有使用它 这是我的服务器: from flask import request, jsonify, make_response import flask.json from flask_jwt_extended import ( JWTManager, jwt_required,

我很难让我的客户机和服务器通过一个简单的AWS Cognito授权来同意令牌应该是什么样子

我的客户使用Bot3和请求。我在标题中传递了授权,我在超过一半的教程中看到了这一点,但我也看到了auth参数的使用,我没有使用它

这是我的服务器:

from flask import request, jsonify, make_response
import flask.json
from flask_jwt_extended import (
    JWTManager, jwt_required, create_access_token,
    get_jwt_identity
)

app = flask.Flask(__name__)

# from: https://flask-jwt-extended.readthedocs.io/en/stable/basic_usage/
# Setup the Flask-JWT-Extended extension
app.config['JWT_SECRET_KEY'] = 'super-secret'  # Change this!
jwt = JWTManager(app)

@app.route("/auth_test")
@jwt_required
def auth_test ():
    current_user = get_jwt_identity()
    return jsonify({"current_user": "current_user"})

if __name__ == "__main__":
    app.run(debug=True)
这里的一个线索是JWT_密钥是从教程中复制的,但我不清楚需要将其更改为什么。也许这是我的问题,但如果是的话,我看不到解决方案,也看不到应该改变什么

这是我的客户:

import requests
import boto3

host = "http://127.0.0.1:8000"
region = '...'
user_pool_id = '...'
username = '...'
password = '...'
app_client_id = '...'
client = boto3.client('cognito-idp', region_name = region)

auth_response = client.admin_initiate_auth(
    UserPoolId = user_pool_id,
    ClientId = app_client_id,
    AuthFlow = 'ADMIN_NO_SRP_AUTH',
    AuthParameters = {
        'USERNAME' : username,
        'PASSWORD' : password
    }
)

id_token = auth_response['AuthenticationResult']['IdToken']
response = requests.get(host + "/auth_test" , headers = { 'Authorization': id_token })
print(response.json())
它打印: {'msg':“错误的授权标头。预期值为'Bearer'”}

这表明我应该传递
“Bearer”+id\u令牌
,而不仅仅是
id\u令牌
,但这与我读过的大多数教程相反,而且当我这样做时,我仍然会得到相同的错误

有人知道我做错了什么吗

编辑:

由于这些评论,我做了一些更改。我补充说

app.config['JWT_ALGORITHM'] = 'RS256'
app.config['JWT_DECODE_ALGORITHMS'] = ['RS256']
#app.config['JWT_PUBLIC_KEY'] = '...' # value that I got from https://cognito-idp.us-east-1.amazonaws.com/<my pool id>/.well-known/jwks.json. There were two entries I tried both values found in kid

谢谢你的帮助

你确定你在CORS中允许授权头作为允许的头吗?你也可以在站点jwt上验证你收到的id令牌。我在这里查看jwt_头类型选项:我根据评论做了一些编辑,但仍然收到一个错误。
ValueError: Could not deserialize key data.