Como desenvolvedor sênior que trabalha extensivamente com APIs, segurança e eficiência são sempre as principais prioridades. Quando se trata de proteger APIs REST, existem vários métodos de autenticação disponíveis, mas nem todos são criados iguais.
OASAP (Autenticação para Serviços e Projetos) Auth da Atlassian se destaca como uma opção robusta, escalonável e segura, principalmente ao lidar com microsserviços ou APIs que exigem mecanismos de autenticação fortes. Mas antes de nos aprofundarmos no porquê do ASAP ser uma ótima escolha, vamos dar uma olhada rápida no que são APIs REST e por que elas são importantes.
O que são APIs REST? ?REST (Representational State Transfer) são um conjunto de regras que permitem a criação de serviços da web que são leves, fáceis de manter e escalonáveis. Eles seguem uma arquitetura cliente-servidor sem estado, onde o servidor processa a solicitação do cliente e envia de volta uma resposta, geralmente em formato JSON ou XML. APIs REST são amplamente utilizadas devido à sua simplicidade, escalabilidade e capacidade de separar a interface do usuário do servidor, o que as torna ideais para construir serviços web que podem ser acessados por vários clientes, incluindo navegadores web, dispositivos móveis dispositivos e outros servidores.
O que é autenticação ASAP? ?️Principais recursos do ASAP Auth:
Implementação Python
import jwt import requests from datetime import datetime, timedelta import os # Define ASAP token creation function def create_asap_token(issuer, audience, private_key): current_time = datetime.utcnow() payload = { 'iss': issuer, 'aud': audience, 'iat': current_time, 'exp': current_time timedelta(minutes=5), } token = jwt.encode(payload, private_key, algorithm='RS256') return token # Load private key from environment variable or file private_key = os.getenv('PRIVATE_KEY') if not private_key: with open('path_to_private_key.pem', 'r') as key_file: private_key = key_file.read() issuer = 'your-service' audience = 'target-service' token = create_asap_token(issuer, audience, private_key) if isinstance(token, bytes): token = token.decode('utf-8') headers = { 'Authorization': f'Bearer {token}' } try: response = requests.get('https://api.target-service.com/data', headers=headers) response.raise_for_status() # Raises HTTPError for bad responses print(response.json()) except requests.exceptions.RequestException as e: print(f"Request failed: {e}")Implementação Java
import jwt import requests from datetime import datetime, timedelta import os # Define ASAP token creation function def create_asap_token(issuer, audience, private_key): current_time = datetime.utcnow() payload = { 'iss': issuer, 'aud': audience, 'iat': current_time, 'exp': current_time timedelta(minutes=5), } token = jwt.encode(payload, private_key, algorithm='RS256') return token # Load private key from environment variable or file private_key = os.getenv('PRIVATE_KEY') if not private_key: with open('path_to_private_key.pem', 'r') as key_file: private_key = key_file.read() issuer = 'your-service' audience = 'target-service' token = create_asap_token(issuer, audience, private_key) if isinstance(token, bytes): token = token.decode('utf-8') headers = { 'Authorization': f'Bearer {token}' } try: response = requests.get('https://api.target-service.com/data', headers=headers) response.raise_for_status() # Raises HTTPError for bad responses print(response.json()) except requests.exceptions.RequestException as e: print(f"Request failed: {e}")Implementação Go
import jwt import requests from datetime import datetime, timedelta import os # Define ASAP token creation function def create_asap_token(issuer, audience, private_key): current_time = datetime.utcnow() payload = { 'iss': issuer, 'aud': audience, 'iat': current_time, 'exp': current_time timedelta(minutes=5), } token = jwt.encode(payload, private_key, algorithm='RS256') return token # Load private key from environment variable or file private_key = os.getenv('PRIVATE_KEY') if not private_key: with open('path_to_private_key.pem', 'r') as key_file: private_key = key_file.read() issuer = 'your-service' audience = 'target-service' token = create_asap_token(issuer, audience, private_key) if isinstance(token, bytes): token = token.decode('utf-8') headers = { 'Authorization': f'Bearer {token}' } try: response = requests.get('https://api.target-service.com/data', headers=headers) response.raise_for_status() # Raises HTTPError for bad responses print(response.json()) except requests.exceptions.RequestException as e: print(f"Request failed: {e}")Como testar a autenticação ASAP usando ferramentas?
Testando com EchoAPI?
Selecione o método API e o URL:
Escolha o método HTTP correto (por exemplo, POST, GET) e insira o URL do endpoint da API.
Navegue até a guia 'Autenticação':
Clique na guia Auth no painel de solicitação.
Escolha autenticação ASAP (Atlassian):
No menu suspenso Tipo, selecione ASAP (Atlassian).
Configurar algoritmo e campos:
Salvar e enviar:
Clique em Salvar e em Enviar para executar a solicitação com autenticação ASAP
import jwt import requests from datetime import datetime, timedelta import os # Define ASAP token creation function def create_asap_token(issuer, audience, private_key): current_time = datetime.utcnow() payload = { 'iss': issuer, 'aud': audience, 'iat': current_time, 'exp': current_time timedelta(minutes=5), } token = jwt.encode(payload, private_key, algorithm='RS256') return token # Load private key from environment variable or file private_key = os.getenv('PRIVATE_KEY') if not private_key: with open('path_to_private_key.pem', 'r') as key_file: private_key = key_file.read() issuer = 'your-service' audience = 'target-service' token = create_asap_token(issuer, audience, private_key) if isinstance(token, bytes): token = token.decode('utf-8') headers = { 'Authorization': f'Bearer {token}' } try: response = requests.get('https://api.target-service.com/data', headers=headers) response.raise_for_status() # Raises HTTPError for bad responses print(response.json()) except requests.exceptions.RequestException as e: print(f"Request failed: {e}")Este comando envia o token ASAP como parte do cabeçalho HTTP e você pode inspecionar a resposta diretamente no terminal.
Conclusão?
Além disso, testar esse método de autenticação usando ferramentas como EchoAPI ou cURL garante que sua implementação seja segura e funcione corretamente. À medida que você continua a criar e proteger suas APIs REST, considere usar o ASAP Auth para aumentar a segurança e a eficiência em seus serviços.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3