As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Implemente a autenticação baseada no Microsoft Entra ID em um aplicativo de AWS mainframe modernizado da Blue Age
Vishal Jaswani e Rimpy Tewani, da Amazon Web Services
Resumo
Os aplicativos de mainframe que são modernizados usando padrões de refatoração, como os do AWS Mainframe Modernization Refactor com AWS Blu Age, exigem uma integração cuidadosa dos mecanismos de autenticação na nova arquitetura do aplicativo. Essa integração geralmente é tratada como uma atividade de pós-modernização. A tarefa pode ser complexa e geralmente envolve a migração ou a externalização dos sistemas de autenticação existentes para se alinharem aos padrões de segurança modernos e às práticas nativas da nuvem. Os desenvolvedores precisam considerar como implementar a autenticação de forma eficaz enquanto trabalham dentro das restrições do ambiente de execução e das bibliotecas do aplicativo modernizado. Após a modernização, AWS fornece maneiras de facilitar a integração do código moderno do AWS Blu Age com sistemas de gerenciamento de identidade e acesso, como o Amazon Cognito e o Microsoft
Esse padrão explica como implementar um mecanismo de autenticação em seu aplicativo modernizado quando o provedor de autenticação é o Microsoft Entra ID, sem gastar tempo em pesquisas e testes. O padrão fornece:
Bibliotecas angulares relevantes e testadas em campo da Microsoft Authentication Library (MSAL) e de outras documentações do Microsoft Entra ID que são essenciais para a implementação da autenticação.
Configurações necessárias no AWS Blu Age Runtime para habilitar o Spring Security usando OAuth 2.0.
Uma biblioteca que captura as identidades dos usuários autenticados e as passa para o Blu Age Runtime. AWS
Medidas de segurança que recomendamos implementar.
Dicas de solução de problemas comuns com a configuração do Microsoft Entra ID.
nota
Esse padrão usa a biblioteca de OAuth extensões AWS Blu Age, que é fornecida aos clientes como parte de seu contrato de serviços AWS profissionais
Pré-requisitos e limitações
Pré-requisitos
Um aplicativo modernizado que foi produzido pelas ferramentas de refatoração de modernização de mainframe da AWS Blu Age. Esse padrão é usado CardDemo
como exemplo de aplicativo de mainframe de código aberto. A biblioteca de OAuth extensões AWS Blu Age, que é fornecida pela equipe da AWS Blu Age durante sua interação com os AWS Serviços Profissionais
. Um ativo Conta da AWS para implantar e testar o aplicativo modernizado.
Familiaridade com os arquivos de configuração do AWS Blu Age e os fundamentos do Microsoft Entra ID.
Limitações
Esse padrão abrange a autenticação OAuth 2.0 e os fluxos básicos de autorização baseados em tokens. Cenários avançados de autorização e mecanismos de controle de acesso refinados não estão no escopo.
Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para ver a disponibilidade da região, consulte Serviços da AWS por região
. Para endpoints específicos, consulte Endpoints e cotas de serviço e escolha o link para o serviço.
Versões do produto
Esse padrão foi desenvolvido usando:
AWS Blu Age Runtime versão 4.1.0 (o padrão também funciona com versões posteriores que são compatíveis com versões anteriores)
Biblioteca MSAL versão 3.0.23
Java Development Kit (JDK) versão 17
Versão angular 16.1
Arquitetura
Pilha de tecnologia de origem
Em ambientes típicos de mainframe, a autenticação é implementada por meio de perfis de usuário. Esses perfis identificam os usuários do sistema, definem quem pode entrar e especificam quais funções os usuários podem executar nos recursos do sistema. Os perfis de usuário são gerenciados por agentes de segurança ou administradores de segurança.
Pilha de tecnologias de destino
Microsoft Entra ID
Back-end modernizado baseado em Java Spring Boot
AWS Tempo de execução do Blu Age
Spring Security com OAuth 2.0
Aplicativo angular de página única (SPA)
Arquitetura de destino
AWS O tempo de execução do Blu Age oferece suporte OAuth à autenticação baseada em 2.0 por padrão, então o padrão usa esse padrão para proteger o back-end. APIs
O diagrama a seguir ilustra o fluxo do processo.
nota
O diagrama inclui o Amazon Aurora como exemplo de modernização do banco de dados, embora o Aurora não esteja incluído nas etapas desse padrão.

em que:
Um usuário tenta se autenticar com o Microsoft Entra ID.
O Microsoft Entra ID retorna tokens de atualização, acesso e ID que o aplicativo usa em chamadas subsequentes.
O interceptor MSAL inclui o token de acesso no
Authorization
cabeçalho de uma solicitação HTTPS para chamar o AWS Blu Age Runtime.A
extension-oauth
biblioteca AWS Blu Age extrai as informações do usuário do cabeçalho usando um arquivo de configuração do AWS Blu Age Runtime (application-main.yml
) e coloca essas informações em umSharedContext
objeto para que a lógica de negócios possa consumi-las.nota
SharedContext
é um componente de tempo de execução fornecido pela AWS Blu Age que gerencia o contexto do aplicativo e as informações de estado em todo o aplicativo modernizado. Para obter mais informações sobre os componentes e atualizações do AWS Blu Age Runtime, consulte as notas de lançamento do AWS Blu Age na AWS Mainframe Modernization documentação. Para obter mais informações sobre oapplication-main.yml
arquivo, consulte Configurar a configuração do AWS Blu Age Runtime na AWS Mainframe Modernization documentação.O AWS Blu Age Runtime verifica se o token está presente.
Se o token estiver presente, ele verifica a validade do token comunicando-se com o Microsoft Entra ID.
Se o token não estiver presente, o AWS Blu Age Runtime retornará um erro com o código de status HTTP 403.
Se o token for válido, o AWS Blue Age Runtime permite que a lógica de negócios continue. Se o token for inválido, o AWS Blu Age Runtime retornará um erro com o código de status HTTP 403.
OAuth Fluxo de trabalho 2.0
Para obter um diagrama de alto nível do fluxo de trabalho OAuth 2.0, consulte a documentação do Microsoft Entra
Ferramentas
Serviços da AWS
AWS Mainframe Modernizationfornece ferramentas e recursos para ajudá-lo a planejar e implementar a migração e a modernização de mainframes para ambientes de tempo de execução AWS gerenciados. Você pode usar os recursos de refatoração desse serviço, fornecidos pela AWS Blu Age, para converter e modernizar seus aplicativos de mainframe antigos.
Repositório de código
O CardDemo aplicativo foi atualizado para demonstrar a integração com o Microsoft Entra ID. Você pode acessar o código do GitHub repositório para esse padrão
Configuração de back-end
Esse padrão requer alterações no arquivo de application-main.yml
configuração para habilitar o Spring Security usando OAuth 2.0 no aplicativo de back-end. O .yml
arquivo tem a seguinte aparência:
gapwalk-application.security: enabled gapwalk-application: security: identity: oauth issuerUri: ${issuerUrl} claim: claims: - claimName: upn claimMapValue: username spring: autoconfigure: exclude: - org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration - org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration security: oauth2: client: registration: azure: client-id: {clientId} client-secret: ${clientSecret} provider: azure authorization-grant-type: authorization_code redirect-uri: ${redirectUri} scope: openid provider: azure: authorization-uri: ${gapwalk-application.security.issuerUri}/oauth2/v2.0/authorize token-uri: ${gapwalk-application.security.issuerUri}/oauth2/v2.0/token jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys resourceserver: jwt: jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys
AWS Biblioteca de filtros de OAuth extensão Blu Age
A biblioteca de OAuth extensões do AWS Blu Age é fornecida pela equipe do AWS Blu Age durante seu envolvimento com os AWS Serviços Profissionais
Essa biblioteca lê a claim.claims
configuração no application-main.yml
arquivo mostrado no bloco de código anterior. Essa configuração é uma lista. Cada item na lista fornece dois valores: claimName
claimMapValue
e. claimName
representa um nome de chave em um JSON Web Token (JWT) enviado pelo frontend e claimMapValue
é o nome da chave de entrada. SharedContext
Por exemplo, se você quiser capturar o ID do usuário no back-end, claimName
defina o nome da chave no JWT que contém o userId
que é fornecido pelo Microsoft Entra ID e claimMapValue
defina o nome da chave para buscar o ID do usuário no código do back-end.
Por exemplo, se você configurar UserId
claimMapValue
, poderá usar o código a seguir para extrair o ID do usuário:
SharedContext.get().getValue("userId", [UserId]);
Práticas recomendadas
Na implementação desse padrão, leve em consideração as seguintes considerações de segurança importantes.
Importante
Esse padrão fornece uma base para a integração da autenticação. Recomendamos que você implemente medidas de segurança além das discutidas nesta seção com base nos requisitos de sua empresa antes de implantá-las na produção.
AWS segurança de configuração.Mova valores de configuração confidenciais de
application-main.yml
para AWS Secrets Manager. Por exemplo, configure as seguintes propriedades usando o Secrets Manager:security: oauth2: client: registration: azure: client-id: {clientId} client-secret: ${clientSecret}
Para obter mais informações sobre como você pode usar o Secrets Manager para configurar os parâmetros do AWS Blu Age, consulte segredos do AWS Blu Age Runtime na AWS Mainframe Modernization documentação.
Proteção do ambiente de execução. Configure o ambiente de aplicativos modernizado com controles AWS de segurança adequados:
server: tomcat: remoteip: protocol-header: X-Forwarded-Proto remote-ip-header: X-Forwarded-For forward-headers-strategy: NATIVE
CloudWatch Registro na Amazon. Considere adicionar o arquivo
logback-spring.xml to src/main/resources
:<configuration> <appender name="CLOUDWATCH" class="com.amazonaws.services.logs.logback.CloudWatchAppender"> <logGroup>/aws/bluage/application</logGroup> <logStream>${AWS_REGION}-${ENVIRONMENT}</logStream> <layout> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </layout> </appender> <root level="INFO"> <appender-ref ref="CLOUDWATCH"/> </root> </configuration>
Para obter informações sobre como ativar o rastreamento com CloudWatch, consulte Habilitar rastreamento para registrar a correlação na CloudWatch documentação.
Configuração e manuseio de tokens. Configure a vida útil do token no Microsoft Entra ID para se alinhar aos seus requisitos de segurança. Configure os tokens de acesso para expirar em 1 hora e os tokens de atualização para expirar em 24 horas. Na configuração do AWS Blu Age Runtime (
application-main.yml
), certifique-se de que a validação do JWT esteja configurada corretamente com o URI exato do emissor e os valores de público do registro do aplicativo Entra ID.Quando um token expira e é atualizado:
O interceptor de erros do aplicativo Angular manipula a resposta 401 obtendo um novo token por meio do MSAL.
O novo token é enviado com a solicitação subsequente.
O OAuth filtro do AWS Blu Age Runtime valida o novo token e é atualizado automaticamente
SharedContext
com as informações atuais do usuário. Isso garante que a lógica de negócios continue a ter acesso ao contexto de usuário válido por meio deSharedContext.get().getValue()
chamadas.
Para obter mais informações sobre os componentes do AWS Blu Age Runtime e suas atualizações, consulte as notas de lançamento do AWS Blu Age.
Segurança do AWS Blu Age Runtime. A
oauth2-ext
biblioteca fornecida pelo AWS Blu Age deve ser colocada no local correto do diretório compartilhado ({app-server-home}/shared/
) com as permissões de arquivo adequadas. Verifique se a biblioteca extrai com êxito as informações do usuário JWTs verificando a população deSharedContext
objetos em seus registros.Configuração específica de reivindicações. Em
application-main.yml
, defina explicitamente as declarações que você precisa do Microsoft Entra ID. Por exemplo, para capturar o e-mail e as funções do usuário, especifique:gapwalk-application: security: claim: claims: - claimName: upn claimMapValue: username - claimName: roles claimMapValue: userRoles - claimName: email claimMapValue: userEmail
Tratamento de erros. Adicione tratamento de erros para solucionar falhas de autenticação em seu aplicativo Angular; por exemplo:
@Injectable() export class AuthErrorInterceptor implements HttpInterceptor { intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { return next.handle(request).pipe( catchError((error: HttpErrorResponse) => { if (error.status === 401) { // Handle token expiration this.authService.login(); } if (error.status === 403) { // Handle unauthorized access this.router.navigate(['/unauthorized']); } return throwError(() => error); }) ); } }
Configuração do tempo limite da sessão. Defina as configurações de tempo limite da sessão no AWS Blu Age Runtime e no Microsoft Entra ID. Por exemplo, adicione o código a seguir ao seu
application-main.yml
arquivo:server: servlet: session: timeout: 3600 # 1 hour in seconds
MsalGuard. Você deve implementar o MsalGuard recurso em todas as rotas protegidas para impedir o acesso não autorizado. Por exemplo:
const routes: Routes = [ { path: '', redirectTo: '/transaction-runner', pathMatch: 'full' }, { path: 'transaction-runner', component: TransactionRunnerComponent, canActivate:guards }, { path: 'user-info', component: UserInfoComponent, canActivate:guards }, { path: 'term/:transid/:commarea', component: TermComponent, canActivate:guards }, { path: 'code', component: TransactionRunnerComponent } ];
As rotas que não têm MsalGuard proteção estarão acessíveis sem autenticação, potencialmente expondo funcionalidades confidenciais. Certifique-se de que todas as rotas que exigem autenticação incluam os protetores em suas configurações.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Configure uma conta do Microsoft Azure para criar uma ID Entra. | Para obter opções e instruções, consulte o site do Microsoft Azure | Desenvolvedor de aplicativos |
Configure um Microsoft Entra ID em seu aplicativo. | Para saber como adicionar a autenticação Microsoft Entra ID B2C (Azure AD B2C) ao seu SPA Angular, consulte a documentação da Microsoft.
| Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Clone o GitHub repositório para obter o código Angular necessário para autenticação. | Execute o comando a seguir para clonar o GitHub repositório
| Desenvolvedor de aplicativos |
Implante o código modernizado do AWS Blu Age em um servidor Tomcat para implementar a autenticação. | Para configurar o ambiente local que inclui o Tomcat e o servidor de desenvolvimento Angular, siga as etapas de instalação fornecidas pela equipe da AWS Blu Age como parte do engajamento do cliente com os AWS Serviços Profissionais. | Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Ative a segurança do AWS Blu Age Runtime para proteger os endpoints da API AWS Blu Age REST. | Configure o
| Desenvolvedor de aplicativos |
Incorpore o código de exemplo do seu ambiente local à sua base de código Angular modernizada do Blu Age. | Para obter informações sobre como incorporar o exemplo em sua base de código Angular modernizada do AWS Blu Age, consulte a seção Repositório de código anteriormente neste padrão. | Desenvolvedor de aplicativos |
Coloque a | Coloque a
| Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Implante o aplicativo de front-end. | Execute os seguintes comandos para iniciar o aplicativo front-end localmente:
notaAdicionar o | Desenvolvedor de aplicativos |
Inicie o aplicativo de back-end. | Inicie o servidor Tomcat no Eclipse. | Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Teste a funcionalidade de login. | Acesse o aplicativo implantado localmente em notaO HTTP é usado aqui para fins de demonstração. Em um ambiente de produção ou outro ambiente acessível ao público, você deve usar HTTPS para fins de segurança. Mesmo para o desenvolvimento local, recomendamos que você configure HTTPS sempre que possível. O prompt de login da Microsoft deve aparecer e os usuários configurados no Microsoft Entra ID devem ter permissão para acessar o aplicativo. | Desenvolvedor de aplicativos |
Teste o cabeçalho de autorização na solicitação. | notaAs etapas a seguir usam o CardDemo
| Desenvolvedor de aplicativos |
Teste a funcionalidade de logout. | Escolha Sair para sair e tente acessar o aplicativo novamente. Ele deve apresentar um novo prompt de login. | Desenvolvedor de aplicativos |
Solução de problemas
Problema | Solução |
---|---|
O token emitido pelo Microsoft Entra ID não é compatível com a segurança do Spring Boot OAuth 2.0. | Para obter uma solução para o problema, consulte Microsoft Entra ID OAuth Flow |
Perguntas gerais relacionadas a tokens. | Para decodificar e visualizar o conteúdo de um token JWT, use o site https://jwt.io/ |
Recursos relacionados
Para entender como o OAuth 2.0 funciona, consulte o site OAuth 2.0
. Para obter uma visão geral da Microsoft Authentication Library (MSAL), consulte a documentação do Microsoft Entra
. Para obter informações sobre perfis de usuário em um sistema AS/400, consulte o tutorial do IBM i (AS400)
.