Partilhar via


Fornecedor MSAL2

O Fornecedor MSAL2 baseia-se no MSAL-browser que implementa o fluxo de código de autorização OAuth 2.0 com PKCE. É utilizado para iniciar sessão de utilizadores e adquirir tokens para utilizar com o Microsoft Graph.

Para saber mais, veja fornecedores.

Introdução

Pode inicializar o Fornecedor MSAL2 em HTML ou JavaScript.

Inicializar na sua página HTML

Inicializar o fornecedor MSAL2 em HTML é a forma mais simples de criar um novo fornecedor. Utilize o mgt-msal2-provider componente para definir o ID de cliente e outras propriedades. Esta ação cria uma nova PublicClientApplication instância que é utilizada para toda a autenticação e aquisição de tokens.

    <mgt-msal2-provider client-id="<YOUR_CLIENT_ID>"
                        login-type="redirect/popup"
                        scopes="user.read,people.read"
                        redirect-uri="https://my.redirect/uri"
                        authority="">
    </mgt-msal2-provider>
Atributo Descrição
client-id ID de cliente de cadeia (veja Criar um ID de aplicação/cliente). Obrigatório.
login-type Enumeração entre redirect e popup - valor predefinido é redirect. Opcional.
escopos Cadeias separadas por vírgulas para âmbitos que o utilizador tem de consentir quando inicia sessão. Opcional.
anfitriões personalizados Cadeias separadas por vírgulas para mais domínios que o cliente do Microsoft Graph pode chamar. Opcional.
autoridade Cadeia de autoridade – a predefinição é a autoridade comum. Para aplicações de inquilino único, utilize o ID do inquilino ou o nome do inquilino. Por exemplo: https://login.microsoftonline.com/[your-tenant-contoso.com ou https://login.microsoftonline.com/[your-tenant-id]. Opcional.
redirect-uri Cadeia de URI de redirecionamento – por predefinição, é utilizado o URI da janela atual. Opcional.
prompt Tipo de pedido a utilizar para iniciar sessão, entre SELECT_ACCOUNT, CONSENTe LOGIN. O padrão é SELECT_ACCOUNT. Opcional.
url base O ponto final do Microsoft Graph a ser utilizado para chamadas do Microsoft Graph. Pode ser qualquer uma das implementações de cloud Nacionais suportadas. O valor padrão é https://graph.microsoft.com.
incremental-consent-disabled Especifica se o consentimento incremental está desativado. Predefinição false. Opcional.

Inicializar em JavaScript

Pode fornecer mais opções ao inicializar o fornecedor em JavaScript.

    import {Providers} from '@microsoft/mgt-element';
    import {Msal2Provider, Msal2Config, Msal2PublicClientApplicationConfig} from '@microsoft/mgt-msal2-provider';

    // initialize the auth provider globally
    Providers.globalProvider = new Msal2Provider(config: Msal2Config | Msal2PublicClientApplicationConfig);

Pode configurar o parâmetro construtor Msal2Provider de duas formas, conforme descrito nas secções seguintes.

Fornecer um clientId para criar um novo PublicClientApplication

Esta opção faz sentido quando o Microsoft Graph Toolkit é responsável por toda a autenticação na sua aplicação.

interface Msal2Config {
  clientId: string;
  scopes?: string[];
  customHosts?: string[];
  authority?: string;
  redirectUri?: string;
  loginType?: LoginType; // LoginType.Popup or LoginType.Redirect (redirect is default)
  prompt?: PromptType; // PromptType.CONSENT, PromptType.LOGIN or PromptType.SELECT_ACCOUNT
  sid?: string; // Session ID
  loginHint?: string;
  domainHint?: string;
  isIncrementalConsentDisabled?: boolean, //Disable incremental consent, true by default
  options?: Configuration // msal-browser Configuration object
}

Transmita um existente PublicClientApplication na publicClientApplication propriedade .

Utilize esta opção quando a sua aplicação utilizar a funcionalidade MSAL para além do que é exposto pelas e outras funcionalidades do Msal2Provider Microsoft Graph Toolkit. Isto é adequado se uma arquitetura instanciar e expor automaticamente um PublicClientApplication por si; por exemplo, ao utilizar MSAL-angular. Para obter mais informações, veja o angular-app exemplo no repositório do Microsoft Graph Toolkit.

Certifique-se de que compreende as oportunidades de colisões ao utilizar esta opção. Pela sua própria natureza, existe o risco de o Msal2Provider poder alterar o estado de uma sessão; por exemplo, ao fazer com que o utilizador inicie sessão ou consoante os âmbitos adicionais. Certifique-se de que a sua aplicação e outras arquiteturas respondem corretamente a estas alterações no estado ou considere utilizar um fornecedor personalizado .

interface Msal2PublicClientApplicationConfig {
  publicClientApplication: PublicClientApplication;
  scopes?: string[];
  customHosts?: string[];
  authority?: string;
  redirectUri?: string;
  loginType?: LoginType; // LoginType.Popup or LoginType.Redirect (redirect is default)
  prompt?: PromptType; // PromptType.CONSENT, PromptType.LOGIN or PromptType.SELECT_ACCOUNT
  sid?: string; // Session ID
  loginHint?: string;
  domainHint?: string;
  isIncrementalConsentDisabled?: boolean, //Disable incremental consent, true by default
  options?: Configuration // msal-browser Configuration object
}

Utilizar um ponto final de cloud diferente

Utilize esta opção quando quiser utilizar o toolkit para compor os seus dados a partir de um ponto final diferente do Microsoft 365.

import {Providers, Msal2Provider} from '@microsoft/mgt'

const config: Msal2Config = {
  baseUrl: 'https://graph.microsoft.us', // change the base URL
  clientId: '2dfea037-xxx-c05708a1b241',
  ... // rest of the config
}

Providers.globalProvider = new Msal2Provider(config);

Em alternativa:

<mgt-msal2-provider
      client-id="2dfea037-xxx-c05708a1b241"
      redirect-uri="http://localhost:3000"
      base-url="https://dod-graph.microsoft.us"
      scopes="user.read,user.read.all">
</mgt-msal2-provider>

Para chamar as APIs personalizadas, peça esse âmbito da API.

<mgt-get resource="https://myapi.com/v1.0/api" scopes="api://CUSTOM_API_GUID/SCOPE">
  ...
</mgt-get>

Ou através de JavaScript/Typescript.

import { prepScopes } from "@microsoft/mgt-element";

graphClient
  .api("https://myapi.com/v1.0/api")
  .middlewareOptions(prepScopes("api://CUSTOM_API_GUID/SCOPE"))
  .get();
...

Utilizar anfitriões personalizados para chamar diferentes pontos finais protegidos por Microsoft Entra ID

Se quiser chamar os seus próprios pontos finais personalizados Microsoft Entra ID protegidos, transmita esses domínios para o cliente subjacente do Microsoft Graph.

import {Providers, Msal2Provider} from '@microsoft/mgt'

const config: Msal2Config = {
  clientId: '2dfea037-xxx-c05708a1b241',
  customHosts: ['mydomain.com'] //array of domains, not urls!
  ... // rest of the config
}

Providers.globalProvider = new Msal2Provider(config);

Em alternativa:

<mgt-msal2-provider
      client-id="2dfea037-xxx-c05708a1b241"
      redirect-uri="http://localhost:3000"
      custom-hosts="mydomain.com"
      scopes="user.read,user.read.all">
</mgt-msal2-provider>

Criar um ID de aplicação/cliente

Para obter detalhes sobre como registar uma aplicação e obter um ID de cliente, veja Criar uma aplicação Microsoft Entra.

Migrar do Fornecedor MSAL para o Fornecedor MSAL2

Para migrar uma aplicação que está a utilizar o fornecedor MSAL para o Fornecedor MSAL2:

  1. Aceda ao centro de administração do Microsoft Entra.

  2. Expanda o menu >Identidade expanda Aplicações> selecione Registros de aplicativo.

  3. Selecione o registo de aplicações da aplicação a migrar.

  4. Aceda a Autenticação no menu esquerdo.

  5. Em Configurações da plataforma, selecione Adicionar uma plataforma e selecione Aplicação de página única.

  6. Remova todos os URIs de redirecionamento que registou atualmente na Web e, em vez disso, adicione-os em Aplicação de página única.

  7. No código, substitua por MSALProviderMSAL2Provider.

    Se inicializar o fornecedor no código JS/TS, siga estes passos:

    Substitua a instrução de importação para por mgt-MSAL-provider

    import {Msal2Provider, PromptType} from '@microsoft/mgt-msal2-provider';
    

    Substitua a inicialização de MsalProvider por

    Providers.globalProvider = new Msal2Provider({
      clientId: 'REPLACE_WITH_CLIENTID'
      ...
    })
    

    Se inicializar o fornecedor em HTML, substitua

    <mgt-msal-provider client-id="" ... ></mgt-msal-provider>
    

    com

    <mgt-msal2-provider  client-id="" ... ></mgt-msal2-provider>
    

    Para obter detalhes, consulte Inicializar na sua página HTML.