Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Por padrão, há suporte multilocatário para seu aplicativo, pois a MSAL define o locatário na autoridade como `common` se ele não for especificado na configuração. Isso permite que qualquer conta da Microsoft se autentique em seu aplicativo. Se você não estiver interessado no comportamento multilocatário, precisará definir a propriedade de configuração authority ao instanciar a MSAL no app.module.ts, conforme mostrado abaixo.
@NgModule({
imports: [
MsalModule.forRoot({ // MSAL Configuration
auth: {
clientId: 'CLIENT_ID_HERE',
authority: 'https://login.microsoftonline.com/TENANT_ID_HERE',
redirectUri: 'http://localhost:4200',
postLogoutRedirectUri: 'http://localhost:4200'
},
// Additional configuration here
});
]
})
export class AppModule {}
Se você permitir a autenticação multilocatário e não quiser permitir que todos os usuários de contas da Microsoft usem seu aplicativo, deverá fornecer seu próprio método para filtrar os emissores de tokens, de modo a aceitar somente os locatários autorizados a fazer logon.
Alterando o locatário
O locatário também pode ser definido dinamicamente ao instanciar uma nova instância da MSAL no componente relevante, conforme mostrado abaixo.
import { PublicClientApplication } from '@azure/msal-browser';
import { MsalService } from '@azure/msal-angular';
@Component({})
export class AppComponent implements OnInit {
constructor(
private authService: MsalService
) {}
ngOnInit(): void {
this.authService.instance = new PublicClientApplication({
auth: {
clientId: 'CLIENT_ID_HERE',
authority: 'https://login.microsoftonline.com/TENANT_ID_HERE',
redirectUri: 'http://localhost:4200',
postLogoutRedirectUri: 'http://localhost:4200'
}
});
}
Solicitação de autenticação dinâmica
Por padrão, o MsalGuard e o MsalInterceptor usam as propriedades estáticas definidas na configuração. Ambos também podem ser configurados com um método para o authRequest, permitindo que os parâmetros usados para autenticação sejam alterados dinamicamente.
MsalInterceptor - solicitação de autenticação dinâmica (tokens de vários locatários)
Se organizations ou common for utilizado como locatário, todos os tokens serão solicitados para o locatário de origem dos usuários. No entanto, esse pode não ser o resultado desejado. Se um usuário for convidado, os tokens poderão ser da autoridade errada.
A configuração authRequest no MsalInterceptorConfig para um método permite que você altere dinamicamente a solicitação de autenticação. Por exemplo, você pode definir a autoridade com base no locatário inicial da conta ao utilizar usuários convidados.
As propriedades em authRequest podem ser alteradas, mas devem sempre estender a originalAuthRequest, conforme descrito abaixo:
export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {
const protectedResourceMap = new Map<string, Array<string>>();
protectedResourceMap.set("https://graph.microsoft.com/v1.0/me", ["user.read"]);
return {
interactionType: InteractionType.Popup,
protectedResourceMap,
authRequest: (msalService, httpReq, originalAuthRequest) => {
return {
...originalAuthRequest,
authority: `https://login.microsoftonline.com/${originalAuthRequest.account?.tenantId ?? 'organizations'}`
};
}
};
}
...
@NgModule({
declarations: [...],
imports: [...],
providers: [
...
{
provide: MSAL_INTERCEPTOR_CONFIG,
useFactory: MSALInterceptorConfigFactory
}
]
});