OpenID (Opcional)
O sistema de autenticação do tipo OpenID tem se tornado cada vez mais popular, principalmente devido a cada vez mais aplicações do tipo de micro serviço estarem ganhando o mercado.
Pensando nisso o Cat UI disponibiliza de forma opcional a integração com sistemas de autenticação OpenID como: Google, Microsoft, Facebook ou qualquer outro de sua preferência, desde que siga os padrões de autenticação OpenID.
Para implementar tal funcionalidade bastam apenas algumas configurações.
name: Informe um valor de seu gosto apenas para identificar a configuração e servir posteriormente como forma de setar qual sistema de autenticação será utilizado pelo sistema.
customQueryParams: Cada sistema de autenticação possui uma forma de escrever e passar informações de secret, pensando nisso, foi criada uma opção onde é possível informar qualquer objeto com as informações que precisar passar para o sistema de autenticação.
clientId: Informe aqui o ClientID gerado pelo seu sistema de autenticação que identifica sua aplicação nele.
scope: Informe aqui quais dados seu token gerado terá acesso no claims.
domain: Informe aqui o host do sistema de autenticação que deseja utilizar.
strictDiscoveryDocumentValidation: De acordo com o sistema de autenticação utilizado será necessário informar true ou false para que a autenticação funcione.
indexLoginName: Informe aqui qual atributo conterá o nome do usuário no token gerado para a exibição no sistema.
indexPictureName (OPCIONAL): Permite informar em qual atributo encontra-se a foto do usuário logado dentro do token.
endpointLogout (OPCIONAL): Permite customizar o endpoint onde o fluxo de login utilizará para fazer o logout da aplicação.
endpointToken (OPCIONAL): Permite customizar o endpoint onde o fluxo de login utilizará para buscar o token da aplicação.
endpointClaims (OPCIONAL): Permite customizar o endpoint onde o fluxo de login utilizará para buscar os dados sensíveis do usuário.
Uso
import { CatEnvironmentInterface } from '@catrx/ui/common';
export const environment: CatEnvironmentInterface = {
production: false,
oauthConfig: [{
name: 'google',
customQueryParams: {
client_secret: 't1gbm...'
},
clientId: '67944...apps.googleusercontent.com',
scope: 'openid profile email',
domain: 'https://accounts.google.com',
strictDiscoveryDocumentValidation: false,
indexLoginName: 'name',
indexPictureName: 'picture'
}]
};
import { Component } from '@angular/core';
import { AppNotification, CatAppService } from '@catrx/ui';
import { UserService } from './shared/services/user/user.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent {
appConfig = this.appService
.build('Cat UI', {
autoAuth: false,
openId: {
service: 'google'
},
onAuth: (decodedToken) => this.userService.getMenu(decodedToken),
})
.setLogotype({
default: '../assets/logotype.svg',
negative: '../assets/logotype-negative.svg',
})
.pushNotifications({
getNotifications: this.userService.getNotifications(),
getPermissionToNotifyOnBrowser: true,
intervalToGet: 5000,
onDelete: (id) => this.userService.deleteNotification(id),
onAllDelete: (ids) => this.userService.deleteNotifications(ids),
})
.enableDarkMode()
.generate();
constructor(
private appService: CatAppService,
private userService: UserService) {}
}
Last updated
Was this helpful?