Я новичок в реализации аутентификации безопасности на rest api. Я пытаюсь реализовать авторизацию oauth2 из пула пользователей aws cognito.
from flask import Flask,jsonify,render_template,request
import requests
import socket
app = Flask(__name__)
name='Umesh'
App_client_id = 'cleintId'
App_client_secret = 'clientSecret'
url = 'https://myurl.auth.eu-west-1.amazoncognito.com'
targetApi = 'https://myTargetApi/v1/product'
class setTokenCache():
cache=''
obj= setTokenCache()
#print("Acces token is ", obj.cache)
@app.route('/login')
def index():
try:
grant_type = 'client_credentials'
response = requests.post(url + '/oauth2/token',
auth=(App_client_id, App_client_secret),
data={'grant_type': grant_type, 'client_id': App_client_id,
'client_secret': App_client_secret})
print("Staus code", response)
if response.status_code!=200:
return "You are not authenticated"
else:
result = response.json()
obj.cache = result['access_token']
print("Access token is",obj.cache)
return "You are Logined"
except socket.gaierror as e:
print("Unable to get the r")
Вход в систему через API 1
Вот api возвращает # 'Вы вошли в систему', если он аутентифицирован с помощью только что сгенерированного токена доступа. Просто рассмотрите его как часть входа в систему.
API 2 Доступ к productDetails
Теперь у меня есть этот API, где я хочу получить действительный ответ, используя сгенерированный выше токен доступа.
@app.route('/getProductDetails', methods=['GET', 'POST'])
def productDetails():
print("Access token is",obj.cache)
headers = {'Authorization': 'Bearer ' + accessToken, 'Accept': 'application/json'}
try:
response = requests.get(targetApi, headers=headers)
return response.json()
except socket.gaierror as e:
print("Unable to get the r")
Здесь мне нужно передать #accessToken, чтобы получить действительный ответ, иначе он вернет, # unauthrized
Expected:
Теперь я хотел бы знать, как мне реализовать эту безопасность для этого api таким образом, чтобы
- Он должен использовать созданный выше токен доступа до истечения срока его действия, чтобы получить действительный ответ от API
http://127.0.0.1:5000/getProductDetails
ИЛИ 2. Как убедиться, что браузер / client будет использовать один и тот же токен при переходе от API 1 к API, пока он не истечет
Оцените, может ли кто-нибудь помочь в этом?