Compartilhar via


Criar suplementos do SharePoint hospedados pelo provedor para acessar dados SAP usando o Gateway SAP para Microsoft

Você pode criar um Suplemento do SharePoint que lê e grava dados SAP e, opcionalmente, lê e grava dados do SharePoint usando o Gateway SAP para Microsoft e a Biblioteca de Autenticação do Azure Active Directory para .NET. Este artigo fornece os procedimentos de como você pode projetar o Suplemento do SharePoint para obter acesso autorizado ao SAP.

Pré-requisitos

Veja a seguir os pré-requisitos para os procedimentos deste artigo:

Entender a autenticação e a autorização para o SAP Gateway para Microsoft e SharePoint

O OAuth 2.0 em Azure AD permite que os aplicativos acessem vários recursos hospedados pelo Azure e o SAP Gateway para Microsoft é um deles. Com o OAuth 2.0, os aplicativos, além dos usuários, são entidades de segurança. As entidades de segurança do aplicativo exigem autenticação e autorização para proteger recursos, além de (e às vezes em vez de) usuários.

O processo envolve um "fluxo" OAuth no qual o aplicativo, que pode ser um Suplemento do SharePoint, obtém um token de acesso (e token de atualização) que é aceito por todos os serviços e aplicativos hospedados pelo Azure que estão configurados para usar Azure AD como um servidor de autorização OAuth 2.0. O processo é muito semelhante à maneira como os componentes remotos de um Suplemento do SharePoint hospedado pelo provedor obtém autorização para o SharePoint, conforme descrito em Criar suplementos do SharePoint que usam autorização de baixa confiança e seus artigos filho. No entanto, o sistema de autorização acs usa o ACS (Serviço de Controle de Acesso do Azure) como o emissor de token confiável em vez de Azure AD.

Dica

Se o Suplemento do SharePoint acessar o SharePoint além de acessar o GATEWAY SAP para a Microsoft, ele precisará usar ambos os sistemas: Azure AD para obter um token de acesso ao SAP Gateway para Microsoft e o sistema de autorização do ACS para obter um token de acesso ao SharePoint. Os tokens das duas fontes não são intercambiáveis. Para obter mais informações, consulte Adicionar acesso do SharePoint ao aplicativo ASP.NET (opcional).

Importante

O Controle de Acesso do Azure (ACS), um serviço do Azure Active Directory (Azure AD) será desativado em 7 de novembro de 2018. Essa desativação não afeta o modele do Suplemento do SharePoint que usa o nome de host https://accounts.accesscontrol.windows.net (que não é afetado por ela). Para saber mais, confira Impacto da desativação do Controle de Acesso do Azure para Suplementos do SharePoint.

Para obter uma descrição detalhada e um diagrama do fluxo OAuth usado pelo OAuth 2.0 em Azure AD, consulte Autorizar acesso a aplicativos Web usando o OAuth 2.0 e o Azure Active Directory.

Para obter uma descrição semelhante e um diagrama do fluxo para acessar o SharePoint, consulte as etapas no fluxo de Token de Contexto.

Criar o Suplemento do SharePoint

Para criar a solução do Visual Studio

  1. Crie um projeto de suplemento do SharePoint no Visual Studio com as etapas a seguir. (O exemplo contínuo neste artigo pressupõe que você esteja usando c#, mas você pode iniciar um projeto de suplemento do SharePoint na seção Visual Basic dos novos modelos de projeto também.)

    1. No Assistente de Suplemento do Novo SharePoint, nomeie o projeto e selecione OK. Para o exemplo contínuo, use SAP2SharePoint.
    2. Especifique a URL de domínio do Office 365 Site do Desenvolvedor (incluindo uma barra de encaminhamento final) como o site de depuração; por exemplo, https://<O365_domain>.sharepoint.com/. Especifique o provedor hospedado como o tipo de suplemento e selecione Avançar.
    3. Selecione um tipo de projeto. Para o exemplo contínuo, selecione ASP.NET Web Forms Aplicativo. (Você também pode fazer ASP.NET aplicativos MVC que acessam o Sap Gateway para Microsoft.) Selecione Avançar.
    4. Selecione ACS do Azure como o sistema de autenticação. (Seu Suplemento do SharePoint usará esse sistema se ele acessar o SharePoint. Ele não usa esse sistema quando acessa o Sap Gateway para Microsoft.) Selecione Concluir.
  2. Depois que o projeto for criado, você será solicitado a entrar na conta Office 365. Use as credenciais de um administrador de conta; por exemplo Bob@<O365_domain>.onmicrosoft.com.

  3. Há dois projetos na solução do Visual Studio: o projeto apropriado do Suplemento do SharePoint e um projeto ASP.NET web forms. Adicione o pacote MSAL ( Biblioteca de Autenticação da Microsoft ) ao projeto ASP.NET com estas etapas:

    1. Clique com o botão direito do mouse na pasta Referências no projeto ASP.NET (chamado SAP2SharePointWeb no exemplo contínuo) e selecione Gerenciar Pacotes NuGet.
    2. Na caixa de diálogo aberta, selecione Online à esquerda. Insira Microsoft.Identity.Client na caixa de pesquisa.
    3. Quando a biblioteca MSAL aparecer nos resultados da pesquisa, selecione o botão Instalar e aceite a licença quando solicitado.
  4. Adicione o pacote Json.net ao projeto ASP.NET com estas etapas:

    1. Insira Json.net na caixa de pesquisa. Se isso produzir muitos hits, tente pesquisar em Newtonsoft.json.
    2. Quando Json.net aparecer nos resultados da pesquisa, selecione o botão Instalar.
  5. Selecione Fechar.

Para registrar seu aplicativo Web com Azure AD

  1. Entre no portal do Azure com sua conta de administrador do Azure.

Observação

Para fins de segurança, recomendamos usar uma conta de administrador ao desenvolver suplementos.

  1. Selecione Active Directory à esquerda.

  2. Selecione seu diretório.

  3. Selecione APLICATIVOS (na barra de navegação superior).

  4. Selecione Adicionar na barra de ferramentas na parte inferior da tela.

  5. Na caixa de diálogo aberta, selecione Adicionar um aplicativo que minha organização está desenvolvendo.

  6. Na caixa de diálogo ADD APPLICATION , dê um nome ao aplicativo. Para o exemplo contínuo, use ContosoAutomobileCollection.

  7. Selecione Aplicativo Web E/Ou API Web como o tipo de aplicativo e, em seguida, selecione o botão de seta direita.

  8. Na segunda página da caixa de diálogo, use a URL de depuração SSL do projeto ASP.NET na solução do Visual Studio como a URL SIGN-ON. Você pode encontrar a URL usando as etapas a seguir. (Você precisa registrar o suplemento inicialmente com a URL de depuração para que você possa executar o depurador do Visual Studio (F5). Quando o suplemento estiver pronto para preparo, você o registrará novamente com a URL do site do Azure. Consulte Modificar o suplemento e estudá-lo no Azure e Office 365.)

    1. Realce o projeto de ASP.NET em Gerenciador de Soluções.
    2. Na janela Propriedades , copie o valor da propriedade URL SSL . Um exemplo é https://localhost:44300/.
    3. Cole-o na URL DE LOGOn na caixa de diálogo ADD APPLICATION.
  9. Para o URI de ID do APLICATIVO, forneça ao aplicativo um URI exclusivo, como o nome do aplicativo acrescentado ao final da URL SSL; por exemplo https://localhost:44300/ContosoAutomobileCollection.

  10. Selecione o botão marca de seleção. O painel do Azure para o aplicativo é aberto com uma mensagem de sucesso.

  11. Selecione CONFIGURAR na parte superior da página.

  12. Role até a ID do CLIENTE e faça uma cópia dela. Você precisará dele para um procedimento posterior.

  13. Na seção chaves , crie uma chave. Ele não será exibido inicialmente. Selecione SALVAR na parte inferior da página e a chave ficará visível. Faça uma cópia dele. Você precisará dele para um procedimento posterior.

  14. Role até permissões para outros aplicativos e selecione seu aplicativo de serviço SAP Gateway para Microsoft.

  15. Abra a lista suspensa Permissões Delegadas e habilite as caixas para as permissões para o serviço SAP Gateway para Microsoft que seu Suplemento do SharePoint precisará.

  16. Selecione SALVAR na parte inferior da tela.

Para configurar o aplicativo para se comunicar com Azure AD

  1. No Visual Studio, abra o arquivo web.config no projeto ASP.NET.
  2. <appSettings> Na seção, as Ferramentas de Desenvolvedor do Office para Visual Studio adicionaram elementos para ClientID e ClientSecret do Suplemento do SharePoint. (Elas serão usadas no sistema de autorização do ACS do Azure se o aplicativo ASP.NET acessar o SharePoint. Você pode ignorá-los para o exemplo contínuo, mas não excluí-los. Eles são necessários em suplementos do SharePoint hospedados pelo provedor, mesmo que o suplemento não esteja acessando dados do SharePoint. Seus valores são alterados sempre que você seleciona F5 no Visual Studio.)

Adicione os dois elementos a seguir à seção. Elas são usadas pelo aplicativo para autenticar para Azure AD. (Lembre-se de que os aplicativos, bem como os usuários, são entidades de segurança em sistemas de autenticação e autorização baseados em OAuth.)

<add key="ida:ClientID" value="" />
<add key="ida:ClientKey" value="" />
  1. Insira a ID do cliente salva do diretório Azure AD no procedimento anterior como o valor da chave ida:ClientID. Deixe o invólucro e a pontuação exatamente como você copiou e tenha cuidado para não incluir um caractere de espaço no início ou no final do valor. Para a chave ida:ClientKey , use a chave que você salvou do diretório. Novamente, tenha cuidado para não introduzir caracteres de espaço ou alterar o valor de forma alguma. A <appSettings> seção agora deve se parecer com o seguinte (o valor ClientId pode ter um GUID ou uma cadeia de caracteres vazia):

    <appSettings>
      <add key="ClientId" value="" />
      <add key="ClientSecret" value="LypZu2yVajlHfPLRn5J2hBrwCk5aBOHxE4PtKCjIQkk=" />
      <add key="ida:ClientID" value="4da99afe-08b5-4bce-bc66-5356482ec2df" />
      <add key="ida:ClientKey" value="URwh/oiPay/b5jJWYHgkVdoE/x7gq3zZdtcl/cG14ss=" />
    </appSettings>
    

    Observação

    Seu aplicativo é conhecido por Azure AD pela URL "localhost" que você usou para registrá-lo. A ID do cliente e a chave do cliente estão associadas a essa identidade. Quando estiver pronto para preparar seu aplicativo para um site do Azure, você o registrará novamente com uma nova URL.

  2. Ainda na seção appSettings, adicione uma chave Authority e defina seu valor para o domínio Office 365 (some_domain.onmicrosoft.com) de sua conta organizacional. No exemplo contínuo, a conta organizacional é Bob@<O365_domain>.onmicrosoft.com, portanto, a autoridade é <O365_domain>.onmicrosoft.com.

    <add key="Authority" value="<O365_domain>.onmicrosoft.com" />
    
  3. Ainda na seção appSettings, adicione uma chave AppRedirectUrl e defina seu valor para a página à qual o navegador do usuário deve ser redirecionado depois que o suplemento ASP.NET tiver obtido um código de autorização do Azure AD. Normalmente, essa é a mesma página em que o usuário estava quando a chamada para Azure AD foi feita. No exemplo contínuo, use o valor da URL SSL com "/Pages/Default.aspx" acrescentado a ele conforme mostrado no código a seguir (este é outro valor que você alterará para preparo):

    <add key="AppRedirectUrl" value="https://localhost:44322/Pages/Default.aspx" />
    
  4. Ainda na seção appSettings , adicione uma chave ResourceUrl e defina seu valor para o URI de ID de APLICATIVO do SAP Gateway para Microsoft (não o URI de ID de APLICATIVO do seu aplicativo ASP.NET). Obtenha esse valor do Gateway SAP para administrador da Microsoft. Apresentamos um exemplo a seguir.

    <add key="ResourceUrl" value="http://<SAP_gateway_domain>.cloudapp.net/" />
    

    A <appSettings> seção agora deve ser mais ou menos assim:

    <appSettings>
      <add key="ClientId" value="06af1059-8916-4851-a271-2705e8cf53c6" />
      <add key="ClientSecret" value="LypZu2yVajlHfPLRn5J2hBrwCk5aBOHxE4PtKCjIQkk=" />
      <add key="ida:ClientID" value="4da99afe-08b5-4bce-bc66-5356482ec2df" />
      <add key="ida:ClientKey" value="URwh/oiPay/b5jJWYHgkVdoE/x7gq3zZdtcl/cG14ss=" />
      <add key="Authority" value="<O365_domain>.onmicrosoft.com" />
      <add key="AppRedirectUrl" value="https://localhost:44322/Pages/Default.aspx" />
      <add key="ResourceUrl" value="http://<SAP_gateway_domain>.cloudapp.net/" />
    </appSettings>
    
  5. Salve e feche o arquivo web.config.

    Dica

    Não deixe o arquivo web.config aberto ao executar o depurador do Visual Studio (F5). As Ferramentas de Desenvolvedor do Office para Visual Studio alteram o valor ClientId (não o ida:ClientID) sempre que você seleciona F5. Isso exige que você responda a um prompt para recarregar o arquivo web.config, se ele estiver aberto, antes que a depuração possa ser executada.

Para adicionar uma classe auxiliar para autenticar a Azure AD

  1. Clique com o botão direito do mouse no projeto ASP.NET e use o processo de adição de item do Visual Studio para adicionar um novo arquivo de classe ao projeto chamado AADAuthHelper.cs.

  2. Adicione o seguinte usando instruções ao arquivo.

    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    using System.Configuration;
    using System.Web.UI;
    
  3. Altere a palavra-chave de acesso de público para interno e adicione a palavra-chave estática à declaração de classe.

    internal static class AADAuthHelper
    
  4. Adicione os campos a seguir à classe. Esses campos armazenam informações que seu aplicativo ASP.NET usa para obter tokens de acesso de Azure AD.

    private static readonly string _authority = ConfigurationManager.AppSettings["Authority"];
    private static readonly string _appRedirectUrl = ConfigurationManager.AppSettings["AppRedirectUrl"];
    private static readonly string _resourceUrl = ConfigurationManager.AppSettings["ResourceUrl"];
    private static readonly string _clientId = ConfigurationManager.AppSettings["ida:ClientID"];
    private static readonly ClientCredential _clientCredential = new ClientCredential(
                              ConfigurationManager.AppSettings["ida:ClientID"],
                              ConfigurationManager.AppSettings["ida:ClientKey"]);
    
    private static readonly AuthenticationContext _authenticationContext =
                new AuthenticationContext("https://login.windows.net/common/" +
                                          ConfigurationManager.AppSettings["Authority"]);
    
  5. Adicione a propriedade a seguir à classe. Essa propriedade contém a URL na tela de entrada Azure AD.

    private static string AuthorizeUrl
    {
      get
      {
        return string.Format("https://login.windows.net/{0}/oauth2/authorize?response_type=code&amp;redirect_uri={1}&amp;client_id={2}&amp;state={3}",
            _authority,
            _appRedirectUrl,
            _clientId,
            Guid.NewGuid().ToString());
      }
    }
    
  6. Adicione as propriedades a seguir à classe. Eles armazenam em cache os tokens de acesso e atualização e verificam sua validade.

    public static Tuple<string, DateTimeOffset> AccessToken
    {
      get {
        return HttpContext.Current.Session["AccessTokenWithExpireTime-" + _resourceUrl]
            as Tuple<string, DateTimeOffset>;
      }
    
      set { HttpContext.Current.Session["AccessTokenWithExpireTime-" + _resourceUrl] = value; }
    }
    
    private static bool IsAccessTokenValid
    {
      get
      {
        return AccessToken != null
          && !string.IsNullOrEmpty(AccessToken.Item1)
          && AccessToken.Item2 > DateTimeOffset.UtcNow;
      }
    }
    
    private static string RefreshToken
    {
      get { return HttpContext.Current.Session["RefreshToken" + _resourceUrl] as string; }
      set { HttpContext.Current.Session["RefreshToken-" + _resourceUrl] = value; }
    }
    
    private static bool IsRefreshTokenValid
    {
      get { return !string.IsNullOrEmpty(RefreshToken); }
    }
    
  7. Adicione os seguintes métodos à classe. Eles são usados para verificar a validade do código de autorização e para obter um token de acesso de Azure AD usando um código de autenticação ou um token de atualização.

    private static bool IsAuthorizationCodeNotNull(string authCode)
    {
      return !string.IsNullOrEmpty(authCode);
    }
    
    private static Tuple<Tuple<string,DateTimeOffset>,string> AcquireTokensUsingAuthCode(string authCode)
    {
      var authResult = _authenticationContext.AcquireTokenByAuthorizationCode(
                  authCode,
                  new Uri(_appRedirectUrl),
                  _clientCredential,
                  _resourceUrl);
    
      return new Tuple<Tuple<string, DateTimeOffset>, string>(
                  new Tuple<string, DateTimeOffset>(authResult.AccessToken, authResult.ExpiresOn),
                  authResult.RefreshToken);
    }
    
    private static Tuple<string, DateTimeOffset> RenewAccessTokenUsingRefreshToken()
    {
      var authResult = _authenticationContext.AcquireTokenByRefreshToken(
                          RefreshToken,
                          _clientCredential.OwnerId,
                          _clientCredential,
                          _resourceUrl);
    
      return new Tuple<string, DateTimeOffset>(authResult.AccessToken, authResult.ExpiresOn);
    }
    
  8. Adicione o método a seguir à classe. Ele é chamado do ASP.NET code-behind para obter um token de acesso válido antes que uma chamada seja feita para obter dados SAP por meio do Sap Gateway para a Microsoft.

    internal static void EnsureValidAccessToken(Page page)
    {
      if (IsAccessTokenValid)
      {
        return;
      }
      else if (IsRefreshTokenValid)
      {
        AccessToken = RenewAccessTokenUsingRefreshToken();
        return;
      }
      else if (IsAuthorizationCodeNotNull(page.Request.QueryString["code"]))
      {
          Tuple<Tuple<string, DateTimeOffset>, string> tokens = null;
          try
          {
            tokens = AcquireTokensUsingAuthCode(page.Request.QueryString["code"]);
          }
          catch
          {
            page.Response.Redirect(AuthorizeUrl);
          }
          AccessToken = tokens.Item1;
          RefreshToken = tokens.Item2;
        return;
      }
      else
      {
        page.Response.Redirect(AuthorizeUrl);
      }
    }
    

Dica

A AADAuthHelper classe tem apenas um tratamento de erro mínimo. Para um Suplemento do SharePoint com qualidade de produção robusto, adicione mais tratamento de erros conforme descrito neste nó MSDN: autorize o acesso a aplicativos Web usando o OAuth 2.0 e o Azure Active Directory.

Para criar classes de modelo de dados

  1. Crie uma ou mais classes para modelar os dados que seu suplemento obtém do SAP. No exemplo contínuo, há apenas uma classe de modelo de dados. Clique com o botão direito do mouse no projeto ASP.NET e use o processo de adição de itens do Visual Studio para adicionar um novo arquivo de classe ao projeto chamado Automobile.cs.

  2. Adicione o seguinte código ao corpo da classe:

    public string Price;
    public string Brand;
    public string Model;
    public int Year;
    public string Engine;
    public int MaxPower;
    public string BodyStyle;
    public string Transmission;
    

Para adicionar code-behind para obter dados do SAP por meio do Gateway SAP para Microsoft

  1. Abra o arquivo Default.aspx.cs e adicione o seguinte usando instruções.

    using System.Net;
    using Newtonsoft.Json.Linq;
    
  2. Adicione uma declaração const à classe Default cujo valor é a URL base do ponto de extremidade SAP OData que o suplemento acessará. O que se segue é um exemplo:

    private const string SAP_ODATA_URL = @"https://<SAP_gateway_domain>.cloudapp.net:8081/perf/sap/opu/odata/sap/ZCAR_POC_SRV/";
    
  3. As Ferramentas de Desenvolvedor do Office para Visual Studio adicionaram um método Page_PreInit e um método Page_Load . Comente o código dentro do método Page_Load e comente todo o método Page_Init . Esse código não é usado neste exemplo. (Se o suplemento do SharePoint acessar o SharePoint, restaure esse código. Consulte Adicionar acesso do SharePoint ao aplicativo ASP.NET (opcional).)

  4. Adicione a linha a seguir à parte superior do método Page_Load . Isso facilita o processo de depuração porque seu aplicativo ASP.NET está se comunicando com o GATEWAY SAP para Microsoft usando o SSL (HTTPS), mas seu servidor "localhost:port" não está configurado para confiar no certificado do SAP Gateway para Microsoft. Sem essa linha de código, você obteria um aviso de certificado inválido antes da abertura de Default.aspx. Alguns navegadores permitem que você clique além desse erro, mas alguns não permitirão que você abra Default.aspx em tudo.

    ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, errors) => true;
    

    Importante

    Exclua essa linha quando estiver pronto para implantar o aplicativo ASP.NET no preparo. Consulte Modificar o suplemento e stage-lo para o Azure e Office 365.

  5. Adicione o código a seguir ao método Page_Load . A cadeia de caracteres que você passa para o GetSAPData método é uma consulta OData.

    if (!IsPostBack)
    {
      GetSAPData("DataCollection?$top=3");
    }
    
  6. Adicione o método a seguir à classe Padrão. Esse método primeiro garante que o cache do token de acesso tenha um token de acesso válido que foi obtido de Azure AD. Em seguida, ele cria uma Solicitação HTTP GET que inclui o token de acesso e o envia para o ponto de extremidade SAP OData. O resultado é retornado como um objeto JSON convertido em um objeto .NET List . Três propriedades dos itens são usadas em uma matriz vinculada ao DataListView.

    private void GetSAPData(string oDataQuery)
    {
      AADAuthHelper.EnsureValidAccessToken(this);
    
      using (WebClient client = new WebClient())
      {
        client.Headers[HttpRequestHeader.Accept] = "application/json";
        client.Headers[HttpRequestHeader.Authorization] = "Bearer " + AADAuthHelper.AccessToken.Item1;
        var jsonString = client.DownloadString(SAP_ODATA_URL + oDataQuery);
        var jsonValue = JObject.Parse(jsonString)["d"]["results"];
        var dataCol = jsonValue.ToObject<List<Automobile>>();
    
        var dataList = dataCol.Select((item) => {
            return item.Brand + " " + item.Model + " " + item.Price;
            }).ToArray();
    
        DataListView.DataSource = dataList;
        DataListView.DataBind();
      }
    }
    

Para criar a interface do usuário

  1. Abra o arquivo Default.aspx e adicione a seguinte marcação ao formulário da página:

    <div>
    <h3>Data from SAP via SAP Gateway for Microsoft</h3>
    
    <asp:ListView runat="server" ID="DataListView">
      <ItemTemplate>
        <tr runat="server">
          <td runat="server">
            <asp:Label ID="DataLabel" runat="server"
              Text="<%# Container.DataItem.ToString()%>" /><br />
          </td>
        </tr>
      </ItemTemplate>
    </asp:ListView>
    </div>
    
  2. Opcionalmente, dê à página da Web a "aparência 'n' de uma página do SharePoint com o controle cromado do SharePoint e a folha de estilos do site do Host SharePoint.

Para testar o suplemento com f5 no Visual Studio

  1. Selecione F5 no Visual Studio.
  2. Na primeira vez que você usa f5, você pode ser solicitado a entrar no Site do Desenvolvedor que você está usando. Use as credenciais do administrador do site. No exemplo contínuo, é Bob@<O365_domain>.onmicrosoft.com.
  3. Na primeira vez que você usa f5, você é solicitado a conceder permissões ao suplemento. Selecione o botão Confiar.
  4. Após um breve atraso enquanto o token de acesso está sendo obtido, a página Default.aspx é aberta. Verifique se os dados SAP são exibidos.

Adicionar acesso do SharePoint ao aplicativo ASP.NET (opcional)

É claro que seu Suplemento do SharePoint não precisa expor apenas dados SAP em uma página da Web lançada do SharePoint. Ele também pode criar, ler, atualizar e excluir dados do SharePoint (CRUD). O code-behind pode fazer isso usando o modelo de objeto cliente do SharePoint (CSOM) ou as APIs REST do SharePoint. O CSOM é implantado como um par de assemblies que as Ferramentas de Desenvolvedor do Office para Visual Studio incluíram automaticamente no projeto ASP.NET e definido como Copiar Local no Visual Studio para que sejam incluídos no pacote de aplicativos ASP.NET.

Para obter informações sobre como usar o CSOM, comece com Concluir operações básicas usando o código da biblioteca de clientes do SharePoint. Para obter informações sobre como usar as APIs REST, comece com a compreensão e o uso da interface REST do SharePoint.

Independentemente de você usar o CSOM ou as APIs REST para acessar o SharePoint, seu aplicativo ASP.NET deve obter um token de acesso ao SharePoint, assim como faz com o SAP Gateway para Microsoft. Consulte Entender a autenticação e a autorização para o SAP Gateway para Microsoft e SharePoint anteriormente neste artigo.

O procedimento a seguir fornece algumas diretrizes básicas sobre como fazer isso, mas recomendamos que você primeiro leia estes artigos:

Para adicionar o acesso do SharePoint ao aplicativo ASP.NET

  1. Abra o arquivo Default.aspx.cs e descompacte o Page_PreInit método. Também descompacte o código que as Ferramentas de Desenvolvedor do Office para Visual Studio adicionaram ao Page_Load método.

  2. Se o Suplemento do SharePoint acessar dados do SharePoint, você precisará armazenar em cache o token de contexto do SharePoint que é POSTed para a página Default.aspx quando o suplemento é iniciado no SharePoint. Isso é para garantir que o token de contexto do SharePoint não seja perdido quando o navegador for redirecionado após a autenticação Azure AD. (Você tem várias opções de como armazenar em cache esse contexto.) As Ferramentas de Desenvolvedor do Office para Visual Studio adicionam um arquivo SharePointContext.cs ao projeto ASP.NET que faz a maior parte do trabalho. Para usar o cache de sessão, basta adicionar o código a seguir dentro do if (!IsPostBack) bloco antes do código que chama para o Gateway sap para a Microsoft.

    if (HttpContext.Current.Session["SharePointContext"] == null)
    {
        HttpContext.Current.Session["SharePointContext"]
            = SharePointContextProvider.Current.GetSharePointContext(Context);
    }
    
  3. O arquivo SharePointContext.cs faz chamadas para outro arquivo que as Ferramentas de Desenvolvedor do Office para Visual Studio adicionaram ao projeto: TokenHelper.cs. Este arquivo fornece a maior parte do código necessário para obter e usar tokens de acesso para o SharePoint. No entanto, ele não fornece nenhum código para renovar um token de acesso expirado ou um token de atualização expirado. Também não contém nenhum código de cache de token. Para um Suplemento do SharePoint de qualidade de produção, você precisa adicionar esse código. A lógica de cache na etapa anterior é um exemplo. Seu código também deve armazenar em cache o token de acesso e reutilizá-lo até que ele expire. Quando o token de acesso expirar, seu código deve usar o token de atualização para obter um novo token de acesso.

  4. Adicione as chamadas de dados ao SharePoint usando CSOM ou REST. O exemplo a seguir é uma modificação do código CSOM que as Ferramentas de Desenvolvedor do Office para Visual Studio adicionam ao método Page_Load . Neste exemplo, o código foi movido para um método separado e começa recuperando o token de contexto armazenado em cache.

    private void GetSharePointTitle()
    {
        var spContext = HttpContext.Current.Session["SharePointContext"] as SharePointContext;
        using (var clientContext = spContext.CreateUserClientContextForSPHost())
        {
            clientContext.Load(clientContext.Web, web => web.Title);
            clientContext.ExecuteQuery();
            SharePointTitle.Text = "SharePoint website title is: " + clientContext.Web.Title;
        }
    }
    
  5. Adicione elementos da interface do usuário para renderizar os dados do SharePoint. O seguinte mostra o controle HTML referenciado no método anterior:

    <h3>SharePoint title</h3>
    <asp:Label ID="SharePointTitle" runat="server"></asp:Label><br />
    

    Observação

    Enquanto você está depurando o Suplemento do SharePoint, as Ferramentas de Desenvolvedor do Office para Visual Studio o registram novamente no Azure ACS sempre que você selecionar F5 no Visual Studio. Ao encenar o Suplemento do SharePoint, você precisa fornecer um registro de longo prazo. Consulte Modificar o suplemento e stage-lo para o Azure e Office 365.

Modifique o suplemento e stage-o para o Azure e Office 365

Quando terminar de depurar o Suplemento do SharePoint usando f5 no Visual Studio, você precisará implantar o aplicativo ASP.NET em um site real do Azure.

Para criar o site do Azure

  1. No Microsoft portal do Azure, abra sites na barra de navegação à esquerda.

  2. Selecione NOVO na parte inferior da página e, na caixa de diálogo NOVO, selecione SITE |QUICK CREATE.

  3. Insira um nome de domínio e selecione SITE CREATE. Faça uma cópia da URL do novo site. Ele tem o formulário my_domain.azurewebsites.net.

Para modificar o código e a marcação no aplicativo

  1. No Visual Studio, remova a linha ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, errors) => true; do arquivo Default.aspx.cs .
  2. Abra o arquivo web.config do projeto ASP.NET e altere a parte de domínio do valor da AppRedirectUrl chave na appSettings seção para o domínio do site do Azure. Por exemplo, altere <add key="AppRedirectUrl" value="https://localhost:44322/Pages/Default.aspx" /> para <add key="AppRedirectUrl" value="https://my_domain.azurewebsites.net/Pages/Default.aspx" />.
  3. Clique com o botão direito do mouse no arquivo AppManifest.xml no projeto suplemento do SharePoint e selecione Exibir Código.
  4. StartPage No valor, substitua a cadeia de caracteres ~remoteAppUrl pelo domínio completo do site do Azure, incluindo o protocolo; por exemplo https://my_domain.azurewebsites.net. O valor inteiro StartPage deve ser https://my_domain.azurewebsites.net/Pages/Default.aspx agora (geralmente, o StartPage valor é exatamente o mesmo que o valor da AppRedirectUrl chave no arquivo web.config ).

Para modificar o registro de Azure AD e registrar o suplemento com ACS

  1. Entre no portal do Azure com sua conta de administrador do Azure.

  2. Selecione Active Directory no lado esquerdo.

  3. Selecione seu diretório.

  4. Selecione APLICATIVOS (na barra de navegação superior).

  5. Abra o aplicativo que você criou. No exemplo contínuo, é ContosoAutomobileCollection.

  6. Para cada um dos seguintes valores, altere a parte "localhost:port" do valor para o domínio do novo site do Azure:

    • URL DE LOGON
    • URI de ID DO APLICATIVO
    • URL DE RESPOSTA

    Por exemplo, se o URI da ID do APLICATIVO for https://localhost:44304/ContosoAutomobileCollection, altere-o para https://<my_domain>.azurewebsites.net/ContosoAutomobileCollection.

  7. Selecione SALVAR na parte inferior da tela.

  8. Registre o suplemento com o ACS do Azure. Isso deve ser feito mesmo se o suplemento não acessar o SharePoint e não usar tokens do ACS, pois o mesmo processo também registra o suplemento com o Serviço de Gerenciamento de Suplementos da assinatura Office 365, que é um requisito. (Ele é chamado de "Serviço de Gerenciamento de Suplementos" porque os suplementos do SharePoint eram originalmente chamados de "aplicativos para SharePoint".

    Você executa o registro na página AppRegNew.aspx de qualquer site do SharePoint na assinatura Office 365. Para obter detalhes, confira Registrar suplementos do SharePoint.

    Como parte desse processo, você obtém uma nova ID do cliente e segredo do cliente. Insira esses valores no web.config para as chaves ClientId (não ida:ClientID) e ClientSecret .

    Aviso

    Se por algum motivo você selecionar F5 depois de fazer essa alteração, as Ferramentas de Desenvolvedor do Office para Visual Studio substituirão um ou ambos os valores. Por esse motivo, você deve manter um registro dos valores obtidos com AppRegNew.aspx e sempre verificar se os valores no web.config estão corretos pouco antes de publicar o aplicativo ASP.NET.

Publicar o aplicativo ASP.NET no Azure e instalar o suplemento no SharePoint

  1. Há várias maneiras de publicar um aplicativo ASP.NET em um site do Azure. Para obter mais informações, consulte Implantação local do Git para Serviço de Aplicativo do Azure.
  2. No Visual Studio, clique com o botão direito do mouse no projeto suplemento do SharePoint e selecione Pacote. Na página Publicar seu suplemento que é aberta, selecione Empacotar o suplemento. Explorador de Arquivos abre para a pasta com o pacote de suplementos.
  3. Entre no Office 365 como administrador global e navegue até o conjunto de sites de catálogo de suplementos da organização. (Se não houver um, crie-o. Consulte Usar o Catálogo de Suplementos para disponibilizar suplementos comerciais personalizados para seu ambiente do SharePoint Online.)
  4. Carregue o pacote de suplementos no catálogo de suplementos.
  5. Navegue até a página Conteúdo do Site de qualquer site na assinatura e selecione adicionar um suplemento.
  6. Na página Suplementos , role até os Suplementos que você pode adicionar e selecione o ícone do suplemento.
  7. Depois que o suplemento for instalado, selecione seu ícone na página Conteúdo do Site para iniciar o suplemento.

Para obter mais informações sobre como instalar suplementos do SharePoint, confira Implantação e instalação de suplementos do SharePoint: métodos e opções.

Implantar o suplemento na produção

Quando terminar todos os testes, você poderá implantar a produção do suplemento. Isso pode exigir algumas alterações.

  1. Se o domínio de produção do aplicativo ASP.NET for diferente do domínio de preparo, você precisará alterar o AppRedirectUrl valor no web.config e o StartPage valor no arquivo AppManifest.xml e reempacotar o Suplemento do SharePoint. Consulte o procedimento Para modificar o código e a marcação no aplicativo anteriormente neste artigo.
  2. A alteração no domínio também requer que você edite o registro de suplementos com Azure AD. Consulte o procedimento Para modificar o registro de Azure AD e registrar o suplemento com ACS anteriormente neste artigo.
  3. A alteração no domínio também requer que você registre novamente o suplemento com ACS (e o Serviço de Gerenciamento de Suplementos) da assinatura, conforme descrito no mesmo procedimento. (Não há como editar o registro de um suplemento com ACS.) No entanto, não é necessário gerar uma nova ID do cliente ou segredo do cliente na página AppRegNew.aspx . Você pode copiar os valores originais das ClientId chaves (não ida:ClientID) e ClientSecret do web.config no formulário AppRegNew. Se você gerar novos, copie os novos valores para as chaves no web.config.

Confira também