Minha primeira experiência usando o IAM
Experiência e feedback do curso on-line "Hands-On with InterSystems API Manager for Developers"
Com o meu conhecimento básico sobre o contêiner Docker e a API REST, queria tentar usar o InterSystems API Manager pela primeira vez para controlar APIs e microsserviços. Concluí esse curso online usando minha instância IRIS local como host (SO Windows) e o IAM em execução em uma VM Linux (convidado).
Primeiro, quero apresentar o InterSystems API Manager (IAM), explicar as etapas para configurar meu ambiente local e, por último, mostrar os capítulos do curso.
Introdução
Atualmente, o gerenciamento de API é muito importante ao aproveitar as vantagens da fácil implantação, com um portal de IU centralizado para gestão, monitoramento e proteção do tráfego da API.
O InterSystems API Manager (IAM) controla APIs e microsserviços consumidos e expostos pelo aplicativo IRIS. É um gateway de API entre sistemas downstream e upstream e também tem uma maneira de rastreamento visual para descobrir como as APIs são chamadas, com que frequência elas são chamadas e quem as chamam.
Benefícios de usar o IAM:
- Monitorar APIs baseadas em HTTP
- Controlar o tráfego
- Proteger a API usando o mecanismo de segurança
- Facilidade de uso para um novo desenvolvedor em processo de integração
Configuração do IAM
O que eu instalei antes de começar a configurar o IAM
- Windows (instância do IRIS instalada)
- VM Linux (Docker instalado)
Ative a instância InterSystems IRIS para o usar o IAM
Abra o Portal de Gerenciamento da instância IRIS e ative o IAM.
- No Portal de Gerenciamento, selecione System Administration > Security > Users e selecione o usuário IAM
- Clique no botão de opção Password
- Insira e confirme uma senha para o usuário IAM
- Selecione a caixa User enabled
- Selecione Save
Ative o aplicativo da Web IAM (confira se a sua licença do IRIS especifica "gerenciamento de API")
- No Portal de Gerenciamento, selecione System Administration > Security > Applications > Web Applications e selecione o "/api/iam"
- Selecione a caixa Enable Application
- Selecione Save
Faça o download e extraia os arquivos de instalação do IAM
- Faça o download do kit de instalação do IAM da WRC dentro do ambiente Linux
- Extraia os arquivos tar (Não extraia iam-image.tar, porque essa é a imagem docker do IAM)


Configure e inicialize o IAM
Nessa etapa, usei o usuário ROOT já que eu estava obtendo erros como "Não foi possível carregar o Portal de Gerenciamento corretamente" ou o script de configuração não estava transmitindo o valor das variáveis de ambiente para o arquivo docker-compose.yaml quando eu usei o sudo com meu usuário Linux. Uma solução para o último problema foi usar "**sudo -E" **para transmitir as variáveis de ambiente.
- Abra o terminal executando o comando "docker load -i iam_image.tar" no diretório onde você extraiu o arquivo do IAM.
- Execute "source ./scripts/iam-setup.sh" no diretório atual ou "source ./iam-setup.sh" na pasta "scripts".
- Insira o nome exato da imagem do IAM e o nome do repositório de https://containers.intersystems.com/contents Por exemplo: intersystems/iam:3.0.2.0-2 (Essa etapa é obrigatória. Caso contrário, você receberá um erro sobre a falha na autenticação do repositório após executar o "docker compose")
- Insira o endereço IP exato da máquina host (Você pode encontrar a especificação IPV4 na configuração do Windows, não insira localhost ou 127.0.0.1)
- Insira o número da porta da instância IRIS no SO do Windows, por exemplo 52773
- Insira e confirme a senha do usuário IAM
- Dentro do diretório "scripts", execute "iam-test.sh" para testar a conexão
- Dentro do diretório "scripts", execute "docker compose up -d" para inicializar o IAM
- Inicialize o portal do IAM no Linux ao acessar: http://localhost:8002/overview
Se você não conseguir dar um ping no endereço host usando a VM, confira Firewall do Windows - Configurações Avançadas - Regras de Entrada. Habilite Ativar compartilhamento de arquivos e impressoras (Solicitação de Echo - ICMPv4-In) Perfil: Privado, Público

Teste o IAM
Dentro do kit de instalação, você encontrará um script chamado "iam-test.sh" no diretório de scripts.
Digite e execute "./iam-test.sh" para começar a testar a conexão entre o IAM e a instância IRIS.
Observação: se o resultado do teste disser "Error creating service. HTTP Status Code:000 ou Error creating service. HTTP Status Code:409" (Erro ao criar o serviço. Código de Status HTTP:000 ou 409), confira o status do docker. Se estiver íntegro, mas ainda não funcionar, encerre o contêiner e execute o docker compose novamente. Pela minha experiência, isso pode acontecer após você pausar a VM.

Para saber mais, encontre aqui a documentação de configuração do IAM: https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls?KEY=CIAM3.0_install#CIAM3.0_install_setupIAM
Exercício prático: https://learning.intersystems.com/course/view.php?name=IAMExercise
Capítulos do curso
Depois de fazer esse exercício, concluí os três capítulos principais que eu gostaria de compartilhar:
- Configuração de Serviços
- Configuração de Rotas
- Configurações de Consumidores e Plugins
Antes de começar a usar o IAM, esse exercício pediu que eu criasse uma solicitação REST usando o método GET, essa solicitação HTTP é do servidor cliente e aponta diretamente para o endpoint, que é um aplicativo da Web criado com base em uma instância IRIS.
Para as próximas etapas, esse exercício mostrou como configurar os serviços a que a solicitação API é encaminhada e a rota que analisa a solicitação de entrada e depois aloca para a API mais adequada.
Configuração de Serviços e Roteadores
O que é um serviço?
Um serviço é configurado para conectar a API Manager ao InterSystems IRIS. Geralmente, você tem um serviço por serviço REST ou aplicativo da Web no InterSystems IRIS. Por exemplo, se você tiver um aplicativo da Web com o caminho base /rest/coffeemakerapp, você configurará um serviço na API Manager para esse URL. Os serviços são geralmente definidos antes das rotas.
O que é uma rota?
Uma rota define o que será chamado pelos aplicativos clientes para o InterSystems API Manager. Geralmente, o serviço é definido antes de uma rota, porque a interface permite que você crie com facilidade as rotas correspondentes diretamente de um serviço definido. As rotas são normalmente versões simplificadas de caminhos no InterSystems IRIS. No exemplo a seguir, você criará rotas para /test, /coffeemakers, /coffeemaker e /newcoffeemaker. Quanto mais específicas forem suas rotas, maior controle você terá sobre suas APIs no API Manager, tanto para visualizar métricas quanto para adicionar plugins a rotas específicas.

Crie um serviço:
- Acesse o Portal de Administrador do IAM e selecione a guia Services
- Clique em New Service e nomeie o serviço
- Selecione Add using URL
- Forneça o URL base, que é o caminho de URL exato especificado no aplicativo da Web, e confira novamente se o endereço IP da instância está correto (não use localhost nem 127.0.0.1)

Crie uma rota:
- Role a tela para baixo no resumo do serviço e clique em Add a Route
- Especifique o nome, os protocolos e o(s) caminho(s)
- O campo Service deve ser gerado automaticamente com os detalhes do serviço
- De acordo com o exercício, era necessário desmarcar Strip Path em Advanced Fields. Caso contrário, o caminho seria removido ao enviar a solicitação para o InterSystems IRIS, o que é um elemento importante para a conexão ao endpoint do InterSystems IRIS.

Após criar o serviço e a rota, você pode usar um cliente REST como o Postman para enviar uma solicitação diretamente para o IAM e receber uma resposta "200 ok", por exemplo: GET http://10.0.0.1:8000/test (/test é a rota criada).
Observação: no meu caso, o URL da solicitação HTTP deve corresponder ao endereço IP da VM Linux. Você pode encontrar o endereço IP por Settings-Network ou executar o comando "ifconfig" no terminal.

Abra o Portal de Administrador do IAM, você verá que a solicitação para mostrar todos os coffeemakers foi registrada com êxito, do cliente REST para o IAM.
Até mesmo com as solicitações CRUD básicas, em vez de enviar a solicitação HTTP diretamente para o aplicativo da Web do IRIS, o uso do IAM proporciona uma representação visual para controlar as APIs e manter a segurança do endpoint.

Usando plugins
Um dos benefícios de usar o IAM é que há vários plugins disponíveis, como o plugin de limitação de taxa, para ajudar com o throttling, de ACL e de OAuth2.0. No meu caso, vou compartilhar minha experiência ativando basic-auth e criando um consumidor.
Ative o plugin basic-auth
- Acesse o Portal de Administrador do IAM e selecione a guia Plugins
- Clique em New Plugin > Basic Authentication > Create

Crie um usuário IRIS para a autenticação básica
- Abra o Portal de Gerenciamento do IRIS
- Acesse System Administration > Security > Users > Create New User
- Defina um nome de usuário e senha
- Deixe os outros campos em branco e clique em Save. No meu caso, criei um usuário chamado "CoffeeManager"

Crie um consumidor e configure as credenciais
- Acesse o Portal de Administrador do IAM e selecione a guia Consumers
- Clique em New Consumer > Insira CoffeeManger (no meu caso) em Username > Create
- Acesse a página de informações do CoffeeManager > Credentials > New Basic Auth Credential
- Use as credenciais do usuário que criamos na instância IRIS > Salve


Agora concluímos todos os requisitos para o plugin basic-auth funcionar
Envie uma solicitação HTTP usando a autenticação básica com a credencial "CoffeeManager" que criamos na última etapa

Acesse a página de informações do CoffeeManager > Activity, você verá que uma solicitação foi registrada

Conclusão
Em suma, comecei apresentando o que é o InterSystems API Manager (IAM) e seus benefícios. Expliquei como configurar o IAM em uma VM Linux e como usar o IAM ao implementar suas funções básicas, criar serviços e rotas e ativar plugins e consumidores.
Se você tiver dúvidas e comentários, não hesite em entrar em contato.
Divirta-se e aproveite o IAM!