Több-bérlős

Az alkalmazás alapértelmezés szerint támogatja a több-bérlős működést, mivel az MSAL a hitelesítési végpontban a bérlőt „common” értékre állítja, ha az nincs megadva a konfigurációban. Ez lehetővé teszi, hogy bármely Microsoft-fiók hitelesítse magát az alkalmazásban. Ha nincs szüksége több-bérlős működésre, akkor az alábbiak szerint be kell állítania a authority konfigurációs tulajdonságot, amikor példányosítja az MSAL-t a(z) app.module.ts elemben.

@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 {}

Ha engedélyezi a több-bérlős hitelesítést, és nem szeretné engedélyezni, hogy minden Microsoft-fiók felhasználó használja az alkalmazást, saját módszert kell biztosítania a jogkivonat-kiállítók szűrésére csak azokra a bérlőkre, akik bejelentkezhetnek.

A bérlő módosítása

A bérlő dinamikusan is beállítható az MSAL egy új példányának a megfelelő komponensben történő létrehozásával, az alábbiak szerint.

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'
      }
    });
  }

Dinamikus hitelesítési kérelem

Alapértelmezés szerint az MsalGuard és az MsalInterceptor a konfigurációban beállított statikus tulajdonságokat használja. Mindkettő konfigurálható olyan metódussal authRequestis, amely lehetővé teszi a hitelesítéshez használt paraméterek dinamikus módosítását.

MsalInterceptor – dinamikus hitelesítési kérés (több-bérlős tokenek)

Ha a bérlőként a(z) organizations vagy a(z) common értéket használják, a rendszer az összes tokent a felhasználók saját bérlőjéhez fogja lekérni. Előfordulhat azonban, hogy ez nem a kívánt eredmény. Ha egy felhasználót vendégként hívnak meg, előfordulhat, hogy a tokenek nem a megfelelő jogosultságkibocsátótól származnak.

authRequest Az MsalInterceptorConfig metódusra állításával dinamikusan módosíthatja a hitelesítési kérelmet. Például vendégfelhasználók használatakor beállíthatja a hitelesítési szolgáltatót a fiók saját bérlője alapján. A authRequest tulajdonságai módosíthatók, de mindig a originalAuthRequest elemet kell kiterjeszteni, az alábbiak szerint:

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
    }
  ]
});