Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Computação
Elastic Cloud Server
Bare Metal Server
Auto Scaling
Image Management Service
Dedicated Host
FunctionGraph
Cloud Phone Host
Huawei Cloud EulerOS
Redes
Virtual Private Cloud
Elastic IP
Elastic Load Balance
NAT Gateway
Direct Connect
Virtual Private Network
VPC Endpoint
Cloud Connect
Enterprise Router
Enterprise Switch
Global Accelerator
Gerenciamento e governança
Cloud Eye
Identity and Access Management
Cloud Trace Service
Resource Formation Service
Tag Management Service
Log Tank Service
Config
Resource Access Manager
Simple Message Notification
Application Performance Management
Application Operations Management
Organizations
Optimization Advisor
Cloud Operations Center
Resource Governance Center
Migração
Server Migration Service
Object Storage Migration Service
Cloud Data Migration
Migration Center
Cloud Ecosystem
KooGallery
Partner Center
User Support
My Account
Billing Center
Cost Center
Resource Center
Enterprise Management
Service Tickets
HUAWEI CLOUD (International) FAQs
ICP Filing
Support Plans
My Credentials
Customer Operation Capabilities
Partner Support Plans
Professional Services
Análises
MapReduce Service
Data Lake Insight
CloudTable Service
Cloud Search Service
Data Lake Visualization
Data Ingestion Service
GaussDB(DWS)
DataArts Studio
IoT
IoT Device Access
Outros
Product Pricing Details
System Permissions
Console Quick Start
Common FAQs
Instructions for Associating with a HUAWEI CLOUD Partner
Message Center
Segurança e conformidade
Security Technologies and Applications
Web Application Firewall
Host Security Service
Cloud Firewall
SecMaster
Anti-DDoS Service
Data Encryption Workshop
Database Security Service
Cloud Bastion Host
Data Security Center
Cloud Certificate Manager
Situation Awareness
Managed Threat Detection
Blockchain
Blockchain Service
Serviços de mídia
Media Processing Center
Video On Demand
Live
SparkRTC
Armazenamento
Object Storage Service
Elastic Volume Service
Cloud Backup and Recovery
Cloud Server Backup Service
Storage Disaster Recovery Service
Scalable File Service
Volume Backup Service
Data Express Service
Dedicated Distributed Storage Service
Containers
Cloud Container Engine
SoftWare Repository for Container
Application Service Mesh
Ubiquitous Cloud Native Service
Cloud Container Instance
Bancos de dados
Relational Database Service
Document Database Service
Data Admin Service
Data Replication Service
GeminiDB
GaussDB
Distributed Database Middleware
Database and Application Migration UGO
TaurusDB
Middleware
Distributed Cache Service
API Gateway
Distributed Message Service for Kafka
Distributed Message Service for RabbitMQ
Distributed Message Service for RocketMQ
Cloud Service Engine
EventGrid
Dedicated Cloud
Dedicated Computing Cluster
Aplicações de negócios
ROMA Connect
Message & SMS
Domain Name Service
Edge Data Center Management
Meeting
AI
Face Recognition Service
Graph Engine Service
Content Moderation
Image Recognition
Data Lake Factory
Optical Character Recognition
ModelArts
ImageSearch
Conversational Bot Service
Speech Interaction Service
Huawei HiLens
Developer Tools
SDK Developer Guide
API Request Signing Guide
Terraform
Koo Command Line Interface
Distribuição de conteúdo e computação de borda
Content Delivery Network
Intelligent EdgeFabric
CloudPond
Soluções
SAP Cloud
High Performance Computing
Serviços para desenvolvedore
ServiceStage
CodeArts
CodeArts PerfTest
CodeArts Req
CodeArts Pipeline
CodeArts Build
CodeArts Deploy
CodeArts Artifact
CodeArts TestPlan
CodeArts Check
Cloud Application Engine
MacroVerse aPaaS
KooPhone
KooDrive
Central de ajuda/ API Gateway/ Melhores práticas/ Desenvolvimento de um autorizador personalizado com FunctionGraph

Desenvolvimento de um autorizador personalizado com FunctionGraph

Atualizado em 2025-02-27 GMT+08:00

Visão geral

As melhores práticas para o APIG da Huawei Cloud orientam você pelo desenvolvimento de autorizadores personalizados.

Além do IAM e da autenticação de aplicações, o APIG também suporta autenticação personalizada com seu próprio sistema de autenticação, que pode se adaptar melhor aos recursos de sua empresa.

A autenticação personalizada é implementada usando o serviço FunctionGraph. Você pode criar uma função de FunctionGraph para que o APIG possa invocá-la para autenticar solicitações para sua API. Esta seção usa a autenticação básica como um exemplo para descrever como implementar a autenticação personalizada com o FunctionGraph.

Desenvolvimento de uma função de autenticação personalizada

Crie uma função no console do FunctionGraph consultando Criação de uma função para autenticação personalizada de front-end.

Especifique o tempo de execução como Python 3.6.

Tabela 1 Configuração da função

Parâmetro

Descrição

Function Type

Padrão: Event Function

Region

Selecione a mesma região que a do APIG.

Function Name

Insira um nome que esteja em conformidade com regras específicas para facilitar a pesquisa.

Agency

Uma agência que delega FunctionGraph para acessar outros serviços em nuvem. Para este exemplo, selecione Use no agency.

Enterprise Project

A opção padrão é default.

Runtime

Selecione Python 3.6.

Na página de guia Code, copie o seguinte código para index.py (se você estiver usando um gateway dedicado, para o qual o parâmetro authorizer_context_support_num_bool foi ativado, o tipo de value no context pode ser boolean ou number).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# -*- coding:utf-8 -*-
import json
def handler(event, context):
# If the authentication information is correct, the username is returned.
    if event["headers"]["authorization"]=='Basic dXN****cmQ=':
        return {
            'statusCode': 200,
            'body': json.dumps({
                "status":"allow",
                "context":{
                    "user_name":"user1"
                }
            })
        }
    else:
        return {
            'statusCode': 200,
            'body': json.dumps({
                "status":"deny",
                "context":{
                    "code": "1001",  
                    "message":"incorrect username or password",
                    "authorizer_success": "false"  
                }
            })
        }

Criação de um autorizador personalizado

No console do APIG, acesse a página Create Custom Authorizer, defina Type como Frontend, selecione a função criada na seção anterior e clique em OK.

Criação de uma API de autenticação personalizada

Crie uma API consultando Criação de uma API. Defina o modo de autenticação como Custom e selecione o autorizador personalizado criado na seção anterior. Depois de modificar a API, publique-a.

Configuração da resposta a erros

Se informações de autenticação incorretas forem transportadas em uma solicitação para a API, a resposta será exibida da seguinte forma:

1
{"error_msg":"Incorrect authentication information: frontend authorizer","error_code":"APIG.0305","request_id":"36e42b3019077c2b720b6fc847733ce9"}

Para retornar o campo no context da função como a resposta da API (se você estiver usando um gateway dedicado, para o qual o parâmetro authorizer_context_support_num_bool foi ativado, o tipo de value em context pode ser boolean ou number), modifique o modelo de resposta do gateway. Na página de detalhes do grupo ao qual a API pertence, navegue até a área Gateway Responses na guia Gateway Information e clique em Edit. Altere o código de status para 401, modifique o modelo de resposta com o seguinte código e clique em OK (não é necessário adicionar aspas duplas para variáveis do tipo boolean ou number):

1
{"code":"$context.authorizer.frontend.code","message":"$context.authorizer.frontend.message", "authorizer_success": "$context.authorizer.frontend.authorizer_success"}

2

Após a modificação, se a autenticação incorreta for transferida ao chamar a API, o código de status 401 será retornado e o resultado da resposta será o seguinte:

1
 {"code":"1001","message":"incorrect username or password","authorizer_success": "false"}

Mapeamento de parâmetros de autenticação de front-end para parâmetros de back-end

Se a autenticação for bem-sucedida, as informações de contexto retornadas pela função podem ser transferidas para o back-end da API. Para fazer isso, execute as seguintes configurações:

Na página APIs, escolha More > Edit na linha que contém a API e vá para a página Define Backend Request. Adicione um parâmetro do sistema, especifique o tipo de parâmetro como Frontend authentication parameter, defina o nome do parâmetro para o conteúdo do campo context na resposta da função e defina o nome e a localização do parâmetro de back-end para o qual você deseja mapear o parâmetro de autenticação do front-end.

Depois de modificar a API, publique-a novamente. Se as informações de autenticação transportadas em uma solicitação para a API estiverem corretas, o resultado da resposta conterá o campo de cabeçalho X-User-Name cujo valor é o mesmo do user_name no campo context da função de autenticação.

Usamos cookies para aprimorar nosso site e sua experiência. Ao continuar a navegar em nosso site, você aceita nossa política de cookies. Saiba mais

Feedback

Feedback

Feedback

0/500

Conteúdo selecionado

Envie o conteúdo selecionado com o feedback