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.
Ao desenvolver para um inquilino Multi-Geo, é importante compreender o modelo de segurança. Felizmente, o modelo utilizado para um inquilino Multi-Geo é o mesmo que o modelo utilizado para um inquilino normal.
Este artigo mostra-lhe como configurar as seguintes aplicações de exemplo:
- Uma aplicação que pode ler e atualizar perfis para todos os utilizadores que utilizam o API do Graph
- Uma aplicação que pode ler e atualizar perfis para todos os utilizadores com a API de Perfil de Utilizador CSOM
- Uma aplicação que pode detetar a configuração Multi-Geo
- Uma aplicação que pode criar e eliminar coleções de sites e definir propriedades da coleção de sites do inquilino
Ler e atualizar perfis para todos os utilizadores que utilizam o API do Graph
Conforme explicado no artigo Trabalhar com perfis de utilizador num inquilino multigeográfico, o modelo preferencial a utilizar para ler e atualizar as propriedades do perfil de utilizador é o API do Graph. Esta secção explica as permissões que tem de conceder à sua aplicação para realizar leituras e atualizações do perfil de utilizador ao nível do inquilino.
Existe uma longa lista de permissões possíveis que pode conceder a uma aplicação definida no Azure AD, mas para manipular perfis, pode limitar as permissões ao seguinte.
| Permissão | Tipo | Descrição | Administração consentimento necessário |
|---|---|---|---|
| User.ReadWrite.All | Permissão do aplicativo | Permite que a aplicação leia e escreva o conjunto completo de propriedades de perfil, associação a grupos, relatórios e gestores de outros utilizadores na sua organização, sem um utilizador com sessão iniciada. Também permite que a aplicação crie e elimine utilizadores não administrativos. Não permite a reposição de palavras-passe de utilizador. |
Sim |
| Sites.ReadWrite.All | Permissão do aplicativo | Permite que a aplicação leia/escreva documentos e liste itens em todas as coleções de sites sem um utilizador com sessão iniciada. Esta permissão só é necessária se a aplicação estiver a obter a localização do site pessoal do utilizador (por exemplo, https://graph.microsoft.com/v1.0/users/UserB@contoso.onmicrosoft.com?$select=mySite). |
Sim |
Os exemplos multigeográficos baseados no Microsoft Graph utilizam a Biblioteca de Autenticação da Microsoft (MSAL) para ligar ao Microsoft Graph no ponto final v2. Em comparação com a ADAL, que se liga através do ponto final v1, a MSAL permite a ligação ao Microsoft Graph através de contas Microsoft, Azure AD e Azure AD B2C. As instruções seguintes irão ajudá-lo a configurar a sua aplicação para o ponto final v2, mas também pode utilizar a abordagem "mais antiga" com base nos pontos finais v1.
Registre seu aplicativo
Para utilizar permissões de aplicação no Microsoft Graph, registe a sua aplicação em https://apps.dev.microsoft.com.
Depois de iniciar sessão, selecione Adicionar uma aplicação e, em seguida, selecione Adicionar uma nova aplicação convergida.
Atribua um nome à sua aplicação e, em seguida, selecione Criar aplicação.
É apresentado o ecrã de configuração da aplicação.
Gere uma nova palavra-passe e tome nota da mesma juntamente com o ID da aplicação.
Selecione Adicionar Plataforma e, em seguida, escolha Aplicação nativa como o destino da plataforma porque a aplicação não tem uma página de destino.
Adicione as Permissões de Aplicação necessárias. Nesta aplicação de exemplo, adicionámos as permissões de aplicação Sites.ReadWrite.All e User.ReadWrite.All.
Desmarque a caixa de marcar de suporte do Live SDK.
- Salve suas alterações.
Consentimento para a aplicação
- Neste exemplo, as permissões User.ReadWrite.All e Sites.ReadWrite.Todas as aplicações requerem o consentimento do administrador num inquilino antes de poderem ser utilizadas. Crie um URL de consentimento da seguinte forma:
https://login.microsoftonline.com/<tenant>/adminconsent?client_id=<clientid>&state=<something>
- Utilizar o ID de cliente da aplicação registada e consentir a aplicação a partir do meu inquilino contoso.onmicrosoft.com; o URL tem o seguinte aspeto:
https://login.microsoftonline.com/contoso.onmicrosoft.com/adminconsent?client_id=6e4433ca-7011-4a11-85b6-1195b0114fea&state=12345
- Navegue para o URL criado e inicie sessão como administrador de inquilinos e consoante a aplicação. Pode ver que o ecrã de consentimento mostra o nome da sua aplicação, bem como os âmbitos de permissão que configurou.
Ler e atualizar perfis para todos os utilizadores que utilizam a API de Perfil de Utilizador CSOM
Ao utilizar a API CSOM para manipular as propriedades do perfil, só o faz para as propriedades criadas personalizadas, uma vez que as propriedades fora da caixa são melhor processadas através do microsoft API do Graph. Para obter mais informações, veja o artigo Trabalhar com perfis de utilizador num inquilino Multi-Geo.
Do ponto de vista da permissão, existem dois modos:
Utilizar credenciais de utilizador
Isto requer a configuração de um
ClientContextobjeto através do URL de administrador inquilino e das credenciais de administrador do SharePoint Online. Uma vez que existe apenas uma instância Azure AD que contém utilizadores, tal implica que um administrador do SharePoint Online é o administrador de todas as localizações geográficas.string tenantAdminSiteForMyGeoLocation = "https://contoso-europe-admin.sharepoint.com"; using (ClientContext cc = new ClientContext(tenantAdminSiteForMyGeoLocation)) { SecureString securePassword = GetSecurePassword("password"); cc.Credentials = new SharePointOnlineCredentials("admin@contoso.onmicrosoft.com", securePassword); // user profile logic } static SecureString GetSecurePassword(string Password) { SecureString sPassword = new SecureString(); foreach (char c in Password.ToCharArray()) sPassword.AppendChar(c); return sPassword; }Utilizar um principal apenas de aplicação
Ao utilizar apenas a aplicação, tem de conceder ao principal de aplicação criado controlo total para o http://sharepoint/social/tenant âmbito de permissão.
As instruções seguintes mostram-lhe como utilizar appregnew.aspx e appinv.aspx para registar um principal de aplicação e dar consentimento ao mesmo.
Criar o principal
Aceda a um site no seu inquilino (por exemplo, ) e, em seguida,
https://contoso.sharepoint.comchame a página appregnew.aspx (por exemplo,https://contoso.sharepoint.com/_layouts/15/appregnew.aspx).Nesta página, selecione o botão Gerar para gerar um ID de cliente e um segredo do cliente.
Preencha os restantes campos da seguinte forma:
- Título:
Multi-Geo demo - Domínio da Aplicação:
www.localhost.com - URI de Redirecionamento:
https://www.localhost.com
Observação
Armazene as informações obtidas (ID de cliente e segredo do cliente) porque irá precisar destas informações no próximo passo.
Importante
A utilização do Azure ACS (Controle de Acesso Services) para o SharePoint Online foi descontinuada a partir de 27 de novembro de 2023 e deixará de funcionar a partir de 2 de abril de 2026. Veja o anúncio completo da descontinuação para saber mais. A utilização Azure ACS fora do contexto do SharePoint já foi descontinuada a 7 de novembro de 2018 e está agora no fim de vida.
A reforma significa que a funcionalidade não receberá novos investimentos, mas continua a ser suportada. O fim de vida significa que a funcionalidade será descontinuada e deixará de estar disponível para utilização.
Conceder permissões ao principal criado
O próximo passo é conceder permissões ao principal recém-criado. Uma vez que estamos a conceder permissões no âmbito do inquilino, esta concessão só pode ser feita através da página appinv.aspx no site de administração do inquilino.
Pode aceder a este site através de
https://contoso-admin.sharepoint.com/_layouts/15/appinv.aspx.Depois de carregar a página, adicione o ID de cliente e, em seguida, procure o principal criado.
- Para conceder permissões, tem de fornecer o XML de permissão que descreve as permissões necessárias. Uma vez que o detetor de experiência de IU tem de conseguir aceder a todos os sites e utilizar a pesquisa apenas com aplicações, necessita das seguintes permissões:
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/social/tenant" Right="FullControl" />
</AppPermissionRequests>
- Quando seleciona Criar, é-lhe apresentada uma caixa de diálogo de consentimento de permissão. Selecione Confiar para conceder as permissões.
Utilizar o principal no código
Depois de o principal ser criado e consentido, pode utilizar o ID e o segredo do principal para pedir acesso. A TokenHelper.cs classe captura o ID e o segredo do ficheiro de configuração da aplicação.
string tenantAdminSiteForMyGeoLocation = "https://contoso-europe-admin.sharepoint.com";
//Get the realm for the URL.
string realm = TokenHelper.GetRealmFromTargetUrl(siteUri);
//Get the access token for the URL.
string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUri.Authority, realm).AccessToken;
//Create a client context object based on the retrieved access token.
using (ClientContext cc = TokenHelper.GetClientContextWithAccessToken(tenantAdminSiteForMyGeoLocation, accessToken))
{
// user profile logic
}
Uma app.config de exemplo tem o seguinte aspeto:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<!-- Use AppRegNew.aspx and AppInv.aspx to register client id with proper secret -->
<add key="ClientId" value="[Your Client ID]" />
<add key="ClientSecret" value="[Your Client Secret]" />
</appSettings>
</configuration>
Observação
Pode inserir facilmente a TokenHelper.cs classe no seu projeto ao adicionar o pacote NuGet [AppForSharePointOnlineWebToolkit] (https://www.nuget.org/packages/AppForSharePointOnlineWebToolkit/) à sua solução.
Descobrir a configuração multigeográfico
A única API suportada que pode utilizar para detetar as localizações geográficas num inquilino multigeográfico é a API do Graph. Esta secção explica as permissões que tem de conceder à sua aplicação para detetar informações da Multi-Geo.
Existe uma longa lista de permissões possíveis que pode conceder a uma aplicação definida no Azure AD, mas para ler as informações de configuração do inquilino Multi-Geo, pode limitar as permissões ao seguinte.
| Permissão | Tipo | Descrição | Administração consentimento necessário |
|---|---|---|---|
| Sites.ReadWrite.All | Permissão do aplicativo | Permite que a aplicação leia/escreva documentos e liste itens em todas as coleções de sites sem um utilizador com sessão iniciada. | Sim |
Utilize os Azure AD passos de criação de aplicações, conforme descrito na secção Perfis de leitura/atualização para todos os utilizadores.
Criar e eliminar coleções de sites e definir propriedades da coleção de sites do inquilino
Utilizar o Microsoft API do Graph
O artigo Sites Multi-Geo fornece mais detalhes sobre como criar sites de grupo (também conhecidos como sites de equipa "modernos") com o microsoft API do Graph. Nesta secção, estamos apenas a abordar as permissões. A tabela seguinte lista as permissões necessárias.
| Permissão | Tipo | Descrição | Administração consentimento necessário |
|---|---|---|---|
| Group.ReadWrite.All | Permissão do aplicativo | Permite que o aplicativo crie grupos, leia e atualize as associações do grupo e exclua grupos. Todas essas operações podem ser executadas pelo aplicativo sem um usuário conectado. Observe que nem todas as API de grupo suportam o acesso usando permissões somente de aplicativo. |
Sim |
Os exemplos multigeográficos baseados no Microsoft Graph utilizam a Biblioteca de Autenticação da Microsoft (MSAL) para ligar ao Microsoft Graph no ponto final v2. Em comparação com a ADAL, que se liga através do ponto final v1, a MSAL permite a ligação ao Microsoft Graph através de contas Microsoft, Azure AD e Azure AD B2C.
Utilize os Azure AD passos de criação de aplicações, conforme descrito na secção Perfis de leitura/atualização para todos os utilizadores.
Utilizar a API de Inquilino CSOM
A utilização da API de Inquilino CSOM é muito semelhante à documentação de orientação da CSOM anteriormente descrita; na verdade, a documentação de orientação para utilizar credenciais de utilizador é idêntica. Para utilizar um principal apenas de aplicação, as instruções são as mesmas, mas tem de conceder permissões diferentes (inquilino e controlo total).
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
</AppPermissionRequests>