Как обрабатывать проверку токена в бэкэнде - PullRequest
0 голосов
/ 26 мая 2020

Я новичок в реализации аутентификации безопасности на 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 таким образом, чтобы

  1. Он должен использовать созданный выше токен доступа до истечения срока его действия, чтобы получить действительный ответ от API
 http://127.0.0.1:5000/getProductDetails

ИЛИ 2. Как убедиться, что браузер / client будет использовать один и тот же токен при переходе от API 1 к API, пока он не истечет

Оцените, может ли кто-нибудь помочь в этом?

1 Ответ

0 голосов
/ 29 мая 2020

Что касается проверки токена Cognito, ниже приведен пример кода NodeJS, и вы должны найти библиотеку для своего языка программирования. Также приведенный ниже онлайн-инструмент может быть полезен для понимания процесса проверки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...