No segundo artigo da série sobre o desenvolvimento de aplicativos na plataforma SAP Cloud no ambiente Neo, abordaremos um dos aspectos mais importantes - gerenciamento de autorização e autenticação de usuário.
Neste artigo, mostraremos como estabelecer uma conexão entre o SAP Cloud Platform e o provedor de identidade (IDP) do cliente imaginário ABC PetroCorp, além de adicionar usuários ao IDP. A seguir, veremos como atribuir funções para usuários da empresa cliente em um aplicativo específico (do IDP), bem como configurar atributos SAML para sua transferência do IDP para o aplicativo da plataforma em nuvem SCP.
Na subconta do cliente fictício ABC PetroCorp
do primeiro artigo , uma assinatura dos aplicativos de monitoramento de poluição SCP fornecidos pela ITeLO Consulting já está instalada. Agora, o funcionário da ABC PetroCorp precisa disponibilizar esse aplicativo para outros colegas.
Um usuário do SAP Cloud Platform pode conectar seu IDP corporativo à plataforma em nuvem e configurar o gerenciamento de segurança e autenticação para o aplicativo carregado no SCP.
A ABC PetroCorp ativou o serviço de autenticação de identidade da SAP Cloud Platform, que fornece acesso aos processos, aplicativos e dados de negócios. Este serviço fornece um inquilino SCI, dentro do qual há um gerenciamento de configuração de aplicativo e autorização de usuário.
Emily, a heroína imaginária do primeiro artigo, tem acesso a esse inquilino da SCI - ela é sua administradora e pode configurar a autorização do usuário em um aplicativo específico. Ela quer descobrir como criar essas configurações usando o serviço de autenticação de identidade.
Requisitos:
- Uma conta SCP global produtiva (não experimental) com o serviço de autenticação de identidade conectado a ela (como um IDP para a subconta ABC PetroCorp);
- O usuário da subconta do cliente deve ser o administrador do inquilino da SCI, para que ele tenha acesso ao console de administração do serviço de autenticação de identidade.
Emily precisa concluir as seguintes etapas no console de administração do serviço de autenticação de identidade e no painel de controle do SCP para disponibilizar o aplicativo na plataforma em nuvem para outros funcionários da ABC PetroCorp:
Etapa 1: estabelecer uma relação de confiança entre o inquilino SCI e a subconta SCP.
Etapa 2: importe os usuários para o locatário da SCI e atualize (inclua) os atributos necessários.
Etapa 3: atribua funções a usuários no nível do aplicativo no SCP.
Etapa 4: configure os atributos no inquilino SCI e no painel de controle do SCP para transferi-los para o aplicativo.
Etapa 5: verificar as configurações.Etapa 1: estabelecer uma relação de confiança entre o inquilino SCI e a subconta SCP
Emily é administradora da subconta ABC PetroCorp e locatária da SCI, o que lhe permite aplicar as configurações necessárias para usar a locatária da SCI como um "repositório de usuários" para o aplicativo de multilocatário fornecido pelo provedor de consultoria ITeLO.
Primeiro, Emily precisa estabelecer um relacionamento de confiança entre o inquilino SCI e a subconta SCP do cliente ABC PetroCorp.
Iremos para o console de administração do serviço de autenticação de identidade usando o link "https: //.accounts.ondemand.com/admin", onde é o identificador do inquilino da SCI. Esse link pode ser encontrado na carta de registro fornecida ao administrador do inquilino do serviço de autenticação de identidade. O identificador de inquilino também é indicado lá.
O console de administração do serviço de autenticação de identidade é o seguinte:

Em outra guia do navegador, abra o painel de controle da subconta do cliente "ABC PetroCorp" e vá para a guia "Segurança" -> "Confiança".

No menu "Trust Management" que é aberto, vá para a guia "Local Service Provider" e clique em "Edit".

Em seguida, executamos as seguintes etapas:
- No campo "Tipo de configuração", altere o tipo para "Personalizado";
- Clique em "Gerar par de chaves" para criar uma chave e um certificado para a conta;
- Altere o valor no campo "Propagação principal" para "Ativar";
- Clique em "Salvar".

Clique em "Obter metadados" para baixar o arquivo de metadados no formato "xml", que contém as configurações descritas anteriormente. Será usado para criar confiança com o inquilino da SCI.
Vamos voltar ao console de administração do serviço de autenticação de identidade e ir para a guia "Aplicativos e recursos" -> "Aplicativos" no menu à esquerda. Na área "Aplicativos", clique no botão "Adicionar" para indicar um novo aplicativo implantado na subconta "ABC PetroCorp".

Na janela exibida, digite o nome do aplicativo (por exemplo, ABC_PetroCorp_IDP) e clique em "Salvar". Depois disso, um novo ponto será criado no inquilino para o nosso aplicativo.
No aplicativo criado, vá para a guia "Confiança" e selecione o parâmetro "Configuração do SAML 2.0".

Na seção "Definir a partir de metadados", clique em "Procurar" e selecione o arquivo de metadados no formato "xml", baixado anteriormente ao configurar a confiança na subconta SCP. Detalhes sobre a configuração do SAML 2.0 serão preenchidos automaticamente após o download do arquivo. Clique em “Salvar” - agora a configuração do SAML 2.0 é criada e salva para este aplicativo.

Volte ao ponto do aplicativo chamado ABC_PetroCorp_IDP no inquilino, clique em "URL inicial" e insira um URL como "https: // pollmonmonitoringui- <nome da conta de subcategoria> .dispatcher. <Região_host>".
Esse URL pode ser encontrado na descrição do aplicativo HTML5 no qual o cliente está inscrito (subconta "ABC PetroCorp"). Para fazer isso, acesse a subconta do cliente na guia "Aplicativos" -> "Assinaturas" e selecione o aplicativo HTML5 assinado.

Na guia "Visão geral" será o URL que precisamos.

Em seguida, retornamos ao ponto do aplicativo no inquilino da SCI, designamos o URL do aplicativo no "URL inicial" e clique em "Salvar".

Agora vá para a guia "Aplicativos e recursos" -> "Configurações do inquilino" no console de administração do serviço de autenticação de identidade. Na página de configurações do inquilino, selecione "Configuração SAML 2.0".

Na janela que se abre, clique em "Baixar arquivo de metadados" para baixar o arquivo "xml" que contém as configurações de inquilino da SCI. Será usado no futuro para estabelecer confiança com a subconta do cliente no SCP.
Volte para a subconta “ABC PetroCorp” e vá para o menu “Segurança” -> “Confiança”, na janela que se abre, selecione a guia “Provedor de identidade de aplicativos”. Clique em "Adicionar provedor de identidade confiável" para adicionar detalhes sobre o inquilino da SCI.

Na guia "Geral", clique em "Procurar" e selecione o arquivo de metadados no formato "xml" baixado do console de administração do serviço de autenticação de identidade. Os detalhes da configuração são preenchidos automaticamente após o download do arquivo. Desmarque a caixa "Somente para SSO iniciado por IDP" e clique em "Salvar".

Agora, a relação de confiança entre a subconta do cliente ABC PetroCorp e seu inquilino SCI foi estabelecida com sucesso. As mesmas configurações podem ser aplicadas às subcontas de outros clientes (por exemplo, para o cliente XYZ EnergyCorp).
Etapa 2: Importar usuários para o inquilino SCI e atualizar (adicionar) os atributos necessários
Emily precisa garantir que os usuários do aplicativo sejam registrados no IDP corporativo da ABC PetroCorp.
Idealmente, um IDP corporativo (no nosso caso, um inquilino da SCI) já incluiria uma lista de todos os usuários da empresa. Para maior clareza, importamos alguns usuários para o inquilino da SCI, após o qual eles receberão permissões apropriadas para acessar o aplicativo.
As demonstrações para o aplicativo são armazenadas em um arquivo “csv” no github -
no Github .
Faça o download do arquivo “CSV” para “ABC PetroCorp” no GitHub. Dois usuários são indicados no arquivo "csv":
- Supervisor ABCPlant: Este usuário será o gerente de uma planta específica da ABC PetroCorp e só poderá visualizar dados sobre sua planta;
- ABCAreaManager: Este usuário será o gerente de uma área inteira, que pode incluir várias plantas da ABC PetroCorp. Ele poderá visualizar dados de todas as plantas em sua área.

O arquivo .csv do ABC PetroCorp contém endereços de email de usuário fictícios. Eles precisam ser substituídos por reais, desde que as cartas cheguem a eles para ativar as contas. Por exemplo, se seu e-mail real for "john.smith@sap.com", será necessário substituir a designação <> por "john.smith" e <<inserir_your_company>> por "sap".

Vá para o console de administração do serviço de autenticação de identidade e selecione a guia "Usuários e autorizações" -> "Importar usuários". Selecione o ponto de aplicação criado anteriormente "ABC_PetroCorp_IDP" e clique em "Procurar", depois selecione o arquivo "ABCPetroCorp.csv" que descreve nossos usuários de demonstração - e clique no botão "Importar".

Os usuários devem ativar sua conta. Para receber um e-mail com um link de ativação, você deve clicar em "Enviar" na janela "Enviar e-mails".
Antes de ativar o usuário, você precisa alterar algumas configurações.
Vá para a aba "Usuários e autorizações" -> "Gerenciamento de usuários". Dois usuários apareceram nas listas de usuários: "Area Manager" e "Plant Supervisor". Eles são identificados automaticamente como P000011 e P000010. Esses identificadores podem ser usados como logins para inserir o inquilino (e no aplicativo, quando todas as configurações necessárias forem feitas).

Vamos para o usuário P000011 ou "Area Manager" e adicionar um nome que também pode ser usado como um login para entrar. Para fazer isso, clique no ícone de edição no campo "Informações pessoais" e preencha o "Nome de login" (no nosso caso, é Johan).

Depois clique em "Salvar".
Agora, vamos fazer o mesmo com o usuário P000010 ou Supervisor de fábrica, mas chame-o de Smith.

O usuário do supervisor da planta deve poder exibir informações apenas sobre sua planta; em seguida, na seção com informações da empresa, é necessário indicar o identificador da empresa (como esse identificador será usado será explicado na Etapa 4).
Para fazer isso, vá para a seção "Informações da empresa" e insira o identificador da planta, ou seja, "101", no campo "Empresa".
Agora, as informações sobre nossos usuários foram alteradas. Para ativá-los, vá para as caixas de correio especificadas no arquivo “csv” e clique no link de ativação ou clique em “Clique aqui para ativar sua conta”.

Portanto, importamos com sucesso os usuários para o inquilino da SCI, atualizamos as informações sobre eles e os ativamos.
Etapa 3: Atribuindo funções aos usuários no nível do aplicativo no SAP Cloud Platform
O aplicativo de monitoramento de poluição de vários inquilinos, criado por Robert da ITeLO Consulting, fornece duas funções predefinidas, PlantSupervisor e AreaManager, que controlam a autorização do usuário no aplicativo e determinam o que o usuário final vê.
- Função Supervisor da planta: Os usuários a quem esta função foi atribuída poderão visualizar apenas os dados da planta identificada nas informações da empresa no inquilino da SCI.
- Função "AreaManager": os usuários a quem esta função é atribuída poderão visualizar dados de todas as plantas em sua área.
Vamos ver como a separação de funções é alcançada no nível do código do projeto.
Vamos para o arquivo web.xml localizado ao longo do caminho / monitoração da poluição
/src/main/webapp/WEB-INF/web.xml ”na pasta do projeto.
Abra o arquivo e verifique se as duas funções acima estão definidas no aplicativo.

Agora vamos ao arquivo “PollutionDataService.java” localizado no caminho “/pollutionmonitoring/src/main/java/com/sap/hana/cloud/samples/pollutionmonitoring/api/PollutionDataService.java” do projeto e abra-o.
O método "getCompanyPollutionData ()" é indicado neste arquivo. Permite verificar se o usuário é um administrador (gerente). Se sim, o aplicativo exibe dados para todas as plantas; caso contrário, os dados são filtrados pelo ID da planta (id_idea). Além disso, o aplicativo exibirá informações apenas para as plantas cujos identificadores correspondem aos indicados nas informações do usuário.

Para maior clareza, você pode consultar o método isUserAdmin (), que permite determinar por função se um usuário é administrador (gerente) ou não.

Um algoritmo semelhante é usado para extrair dados da planta de sistemas locais.

Agora, Emily, como funcionária da ABC PetroCorp, precisa identificar os gerentes de área e de fábrica, atribuindo a eles as funções apropriadas (ABCPlantSupervisor e ABCAreaManager) no aplicativo no SCP.
Iremos para a subconta do cliente ABC PetroCorp e selecionaremos o aplicativo Java de monitoramento de poluição fornecido pelo provedor ITeLO Consulting (ele está localizado na guia Aplicativos -> guia Assinaturas).

Em seguida, vá para a guia "Funções" (no nível do aplicativo).
Na janela que é aberta, uma lista de funções indicadas no aplicativo é exibida. Selecione a função "PlantSupervisor" e clique em "Atribuir". Na janela exibida, insira o ID do usuário, indicado no locatário da SCI como "ABCPlantSupervisor". No nosso caso, o identificador desse usuário será P000010.
Em seguida, selecione a função "AreaManager" e clique em "Atribuir". Na janela exibida, insira o identificador do usuário indicado no inquilino da SCI como "ABCAreaManager" (no nosso caso, o identificador desse usuário será P000011).

Portanto, comparamos com êxito os papéis do aplicativo com os usuários correspondentes do ABC PetroCorp do locatário da SCI.
As mesmas configurações podem ser aplicadas na subconta de outro cliente (por exemplo, “XYZ EnergyCorp”).
Etapa 4: configurando atributos no inquilino SCI e no painel de controle SCP para transferir para o aplicativo
Robert da ITeLO Consulting programou o aplicativo multilocatário de forma que ele precisa passar o identificador de usuário do PlantSupervisor para a planta, para que os dados da planta possam ser filtrados na aplicação para esse identificador de planta específico.
Nas etapas anteriores, adicionamos o identificador da planta ao usuário "PlantSupervisor" no inquilino SCI no campo "Informações da empresa", que agora precisamos transferir para o aplicativo multilocatário. Em seguida, ele pode ser usado em um aplicativo para exibir dados relacionados a uma instalação específica. O usuário do AreaManager é essencialmente um administrador que pode visualizar dados de todas as plantas.
Vamos ver como isso é organizado no nível do código do aplicativo.
Abra o arquivo “PollutionDataService.java” localizado no caminho “/pollutionmonitoring/src/main/java/com/sap/hana/cloud/samples/pollutionmonitoring/api/PollutionDataService.java” no projeto.
Este arquivo descreve o método getPlantId (). Este método descreve a obtenção do nome de usuário e a verificação do atributo "PLANT_ID", usado para filtrar os dados de poluição e os dados da planta.

Podemos transferir atributos do usuário do locatário da SCI para o aplicativo por meio dos Atributos de Asserção SAML. Isso é necessário para que o atributo de usuário do inquilino SCI que contém informações da empresa seja lido pelo SCP no momento em que o usuário efetua login. O chamado "Atributo de asserção" (atributo de aprovação) definido para o usuário precisa ser transferido para o aplicativo de monitoramento de poluição.
Para fazer isso, primeiro crie um "Atributo de asserção" no locatário da SCI e, em seguida - designe o atributo de aprovação no atributo principal ("Atributo principal") na subconta "ABC PetroCorp", que pode ser lida pelo código do aplicativo, como mostrado acima.
Vá para o console de administração do serviço de autenticação de identidade e selecione a guia "Aplicativos e recursos" -> "Aplicativos". Selecione o aplicativo que precisamos (ABC_PetroCorp_IDP) e, na guia "Confiança", clique em "Atributos de asserção".

Uma lista de atributos existentes aparecerá, precisamos de mais uma. Para fazer isso, clique no botão "Adicionar" e selecione o atributo "Empresa".
Em seguida, adicionamos "plant_id" (diferencia maiúsculas de minúsculas) ao valor do atributo e clicamos em "Salvar".

Agora vá para a subconta “ABC PetroCorp” no SCP e vá para a aba “Segurança” -> “Confiança”. Na janela "Trust Management", vá para a guia "Application Identity Provider" e selecione o IdP associado à subconta.

Na janela que se abre, vá para a guia "Atributos" e clique em "Adicionar atributo baseado em asserção". No campo "Atributo de asserção", inserimos o valor "plant_id" (como no inquilino da SCI) e no campo "Atributo principal", inserimos "PLANT_ID" (esse valor será transferido para o aplicativo como o código da instalação) - e clique em "Salvar".
Portanto, configuramos com sucesso os atributos no inquilino SCI e no painel de controle do SCP para transferi-los para o aplicativo.
Etapa 5: verificar as configurações
Agora, Emily pode verificar se as configurações de inquilino SCI (IdP) estão definidas corretamente para a subconta "ABC PetroCorp" no SCP e para o aplicativo que o provedor fornece.
Para fazer isso, vá para a subconta "ABC PetroCorp" e vá para o aplicativo HTML5 "poluiçãomonitoringui" (está localizado na guia "Aplicativos" -> "Assinaturas").

Copie o link para o aplicativo. Abra uma nova guia no navegador no modo de navegação anônima e insira um link para o aplicativo HTML5. Uma janela aparecerá para entrar no aplicativo, onde o nome indicado no inquilino da SCI será exibido.
Se tudo estiver configurado corretamente, você poderá inserir o aplicativo nos usuários de “AreaManager” e “PlantSupervisor”, indicados no inquilino da SCI.
No nosso caso, o gerente da região é o usuário Johan (P000011) e o chefe da fábrica é Smith (P000010). Você pode inserir o aplicativo nesses usuários usando o nome de usuário ou seu identificador como um logon.
Nota: ao entrar no aplicativo nesta fase, nenhum dado será exibido. Isso é normal porque a configuração ainda não está concluída e o sistema local não está conectado.
Portanto, configuramos uma conexão de provedor de identidade (IDP) com nosso aplicativo de monitoramento de poluição SCP. Também importamos usuários e atribuímos a eles as funções corretas para acessar o aplicativo, garantindo que as informações corretas da instalação fossem transferidas para o aplicativo.