Integrating Authentication com OpenID Connect em Module Federation
Introduction
Module Federation enhances o management de shared code e estado across micro-frontends. Este guia vai walk você por meio de adding authentication para seu projeto usando OpenID Connect com Okta. By o end de este documentation, your aplicação vai ser able para tratar authenticated states both within o existente aplicação e uma newly integrated micro-frontend.
Prerequisites
- Uma free Okta developer account. Se você não have one, você pode sign up usando o Okta CLI.
- Okta CLI installed on your machine.
Setting Up Okta Authentication
Crie um Okta Aplicação
Register ou Log In para Okta:
- To register para uma nova account, execute
okta registerem your terminal. - Se você já have um account, log em by running
okta login.
Crie Your Aplicação:
- Execute
okta apps create. - Quando prompted, accept o padrãa aplicação name ou forneça uma nova one.
- Select Single-Page App (SPA) e confirm by pressing Enter.
- For Redirect URI, use
http://localhost:4200/login/callbacke definir o Logout Redirect URI parahttp://localhost:4200.
Configure Aplicação em Okta
O Okta CLI cria um OIDC SPA em your Okta Org, configures redirect URIs, grants access para o Everyone group, e adds http://localhost:4200 as uma trusted origin.
O Okta Admin Console pode também ser usado for app creation. For Angular apps, refer para o Okta documentation on criação um Angular aplicação.
Okta Aplicação Configuração Exemplo:
- Issuer:
https://dev-12345.okta.com/oauth2/default - Cliente ID:
0oab12345CDEF
Ensure você note down o Issuer e Cliente ID; these são crucial for your aplicação's configuração.
Instale Obrigatório Libraries
Add Okta Angular e Okta Auth JS libraries para seu projeto:
Configure Okta em Angular Módulo
Importe e configure OktaAuthModule e OktaAuth em your shell projeto's AppModule. Replace {yourOktaDomain} e {yourClientID} com your specific Okta domain e cliente ID.
Configure Routing for Authentication
Update o app-routing.module.ts para include o login callback rota.
Implementing Authentication Logic
Update Aplicação Componente
Modify app.component.ts para include sign-em e sign-out logic, utilizing o Okta libraries. Update o authentication estado variables accordingly.
Handle Sign-In e Sign-Out no UI
In app.component.html, adicione o UI logic for sign-em e sign-out buttons.
Testing o Aplicação
Run o projeto usando npm run começa (ou o appropriate comando for your configuração) para test authentication functionality. Successful implementation allows users para sign em e out, com o profile information being accessible upon signing em.
Adding User Profiles com Module Federation
Este section expands on incorporating Module Federation para compartilhar authenticated estado across o principal aplicação e o micro-frontend. We'll explore como para definir up uma nova Angular aplicação, configure routing, e update componentes para include profile details.
Generate uma New Angular Aplicação
Stop o projeto atual execution e run o seguintes comando para criar uma nova Angular aplicação chamado mfe-profile:
Este comando accomplishes several tasks:
- Generates uma nova aplicação com um módulo e componente.
- Adds uma separate routing módulo.
- Defines CSS styles para ser inline within componentes.
- Skips o criação de test arquivos para o initial componente.
Generate HomeComponent e ProfileModule
Execute o seguintes comandos para criar uma HomeComponent e uma ProfileModule within o mfe-profile aplicação:
Esses comandos crie:
- Uma
HomeComponentpara o padrão rota. - Uma
ProfileModulecom routing e uma padrãoProfileComponent, added as uma lazy-carregado rota para oAppModule.
Updating o Aplicação Code
Configure Routing:
Update projects/mfe-profile/src/app/app-routing.module.ts para include uma rota for HomeComponent e uma lazy-carregado rota for ProfileModule:
Update AppComponent e HomeComponent Templates
- For
app.component.html, replace o content com uma message de your choice e umarouter-outletfor navigation. - For
home.component.html, forneça uma message guiding users para o Profile page com uma router link para/profile.
Profile Componente Configuração
Implement Profile Logic
Update projects/mfe-profile/src/app/profile/profile.component.ts para include propriedades for user profile information e authentication estado, utilizing OktaAuthStateService.
Update Profile Template
Modify o template para display user profile details, such as name e email, e o último sign-em time.
Integrating Module Federation
Add Module Federation para mfe-profile
Use o @angular-architects/module-federation schematic para prepare mfe-profile for Module Federation, specifying port 4202.
Configure mfe-profile as uma Remote
Update webpack.config.js em mfe-profile para exponha ProfileModule para a aplicação host.
Update Host Aplicação Configuração
Modify o shell aplicação's webpack.config.js para include mfe-profile as uma remote, enabling o host para acessar o Profile micro-frontend.
Compartilhe Authenticated Estado
- Update
webpack.config.jsno shell aplicação para compartilhar Okta libraries as singletons. - Ensure
mfe-profiletambém shares o Okta libraries para utilizar o authenticated estado.
Running o Integrated Aplicação
Depois configuring Module Federation e updating both o shell e micro-frontend aplicações, você pode run o projeto usando npm run run:all.
Este configuração allows você para log em, view your profile, log out, e interact com other parts do aplicação seamlessly across o principal e micro-frontend parts.