Você pode configurar o SimpleSAMLphp 1.10 ou versões posteriores como seu provedor de identidade (IDP) para logins enterprise no Portal for ArcGIS. O processo de configuração envolve duas principais etapas: registrar seu provedor de identidade enterprise com Portal for ArcGIS e registrar Portal for ArcGIS com o provedor de identidade enteprise.
Opcionalmente, você pode fornecer metadados para o portal sobre os grupos enterprise no armazenamento de identidade. Isto permite a você criar grupos no portal que alavancam os grupos enterprise existentes no seu armazenamento de identidade. Quando membros entram no portal, o acesso ao conteúdo, itens e dados são controlados pelas regras de associação definidas no grupo enterprise. Se você não fornecer ao grupo enterprise os metadados necessários, você ainda poderá criar grupos. Porém, as regras de associação serão controladas pelo Portal for ArcGIS, não pelo armazenamento de identidade.
Informações exigidas
O Portal for ArcGIS exige determinadas informações de atributo a serem recebidas do provedor de identidade quando um usuário entra utilizando logins enterprise. NameID é um atributo obrigatório que deve ser enviado por seu provedor de identidade na resposta de SAML para criar a federação com trabalho do Portal for ArcGIS. Quando um usuário IDP entrar, um novo usuário com o nome de usuário NameID será criado pelo Portal for ArcGIS no seu armazenamento de usuário. Os caracteres permitidos para o valor enviado pelo atributo NameID são alfanuméricos, _ (underscore), . (ponto) e @ (arroba). Quaisquer outros caracteres serão liberados para conter underscores no nome de usuário criado pelo Portal for ArcGIS.
O Portal for ArcGIS suporta a entrada dos atributos givenNamee email address do login enterprise a partir do provedor de identidade enterprise. Quando um usuário entra utilizando um login enterprise e se o Portal for ArcGIS receber atributos com os nomes givenname e email ou mail (em qualquer caso), o Portal for ArcGIS preenche o nome completo e o endereço de e-mail da conta de usuário com os valores recebidos do provedor de identidade. É recomendado que você passe o email address do provedor de identidade enterprise de forma que o usuário possa receber notificações.
Registrar o SimpleSAMLphp como o provedor de identidade enterprise com Portal for ArcGIS
- Configure uma fonte de autenticação no SimpleSAMLphp IdP.
- Crie uma fonte de autenticação.
O SimpleSAMLphp suporta a autenticação de usuários a partir de várias fontes de autenticação como servidor LDAP, usuários em um servidor SQL, domínio do Active Directory, e assim por diante. O exemplo abaixo mostra como configurar um Apache Directory Server como uma fonte de autenticação no IdP do SimpleSAMLphp.
As fontes de autenticação podem ser configuradas no arquivo <SimpleSAML_HOME>/config/authsources.php. Para configurar um servidor LDAP, abra o arquivo config/authsources.php e adicione uma fonte de autenticação baseada em LDAP no seguinte formato.
'example-ldapApacheDS' => array( 'ldap:LDAP', /* The hostname of the LDAP server. */ 'hostname' => 'host:port', /* Whether SSL/TLS should be used when contacting the LDAP server. */ 'enable_tls' => TRUE, /* * Which attributes should be retrieved from the LDAP server. * This can be an array of attribute names, or NULL, in which case * all attributes are fetched. */ 'attributes' => NULL, /* * The pattern that should be used to create the users DN given the username. * %username% in this pattern will be replaced with the user's username. * * This option is not used if the search.enable option is set to TRUE. */ 'dnpattern' => 'uid=%username%,ou=users,ou=system', /* * As an alternative to specifying a pattern for the users DN, it is possible to * search for the username in a set of attributes. This is enabled by this option. */ 'search.enable' => FALSE, /* * The DN that will be used as a base for the search. * This can be a single string, in which case only that DN is searched, or an * array of strings, in which case they will be searched in the order given. */ 'search.base' => 'ou=users,ou=system', /* * The attribute(s) the username should match against. * * This is an array with one or more attribute names. Any of the attributes in * the array may match the value the username. */ 'search.attributes' => array('uid', 'mail'), /* * The username & password the simpleSAMLphp should bind to before searching. If * this is left as NULL, no bind will be performed before searching. */ 'search.username' => 'uid=admin,ou=system', 'search.password' => 'password', ),
O Portal for ArcGIS suporta a entrada dos atributos givenName e email address do login enterprise a partir do provedor de identidade enterprise. Quando um usuário entra utilizando um login enterprise e se o Portal for ArcGIS receber atributos com os nomes givenname e email ou mail (em qualquer caso), o Portal for ArcGIS preenche o nome completo e o endereço de e-mail da conta de usuário com os valores recebidos do provedor de identidade.
É recomendado que você passe o endereço de e-mail do provedor de identidade enterprise no Portal for ArcGIS. Isto ajuda se o usuário se tornar posteriormente um administrador. Ter um endereço de e-mail na conta intitula o usuário para receber notificações relacionadas com qualquer atividade administrativa e enviar convites para outros usuários participarem da organização.
- Configure a fonte de autenticação que você criou acima como um modelo de autenticação no IdP do SimpleSAMLphp. Abra o arquivo metadata/ saml20-idp-hosted.php e adicione a fonte de autenticação para utilizar.
/* * Authentication source to use. Must be one that is configured in * 'config/authsources.php'. */ 'auth' => 'example-ldapApacheDS',
- Crie uma fonte de autenticação.
- Configure o formato do identificador de nome suportado pelo IdP do SimpleSAMLphp. Abra o arquivo < SimpleSAML_HOME >/metadata/saml20-idp-hosted.php e adicione o snippet abaixo. No seguinte exemplo, uid será validado como NameID pelo IdP do SimpleSAMLphp no Portal for ArcGIS após a autenticação do usuário.
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'authproc' => array( 3 => array( 'class' => 'saml:AttributeNameID', 'attribute' => 'uid', 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', ), ),
- Registre o SimpleSAMLphp como o provedor de identidade para sua organização do Portal for ArcGIS.
- Entre no site da web do portal como um administrador da sua organização e clique em Minha Organização > Editar Configurações > Segurança.
- Dentro da seção Logins Enterprise, clique no botão Configurar Provedor de Identidade e insira o nome da sua organização na janela que aparece (por exemplo, Cidade de Redlands). Quando usuários acessam o site da web do portal, este texto aparece como parte da opção de registro do SAML (por exemplo, Utilizando sua conta da Cidade de Redlands).
Anotação:
Você pode registar somente um fornecedor de identidade enterprise para seu portal.
- Escolha se os seus usuários poderão participar da organização Automaticamente ou Após você adicionar as contas no portal. A seleção da primeira opção permite aos usuários entrarem na organização com seu login enterprise sem qualquer intervenção de um administrador. Sua conta é registrada com a organização automaticamente na primeira vez que eles entram. A segunda opção exige que o administrador registre as contas necessárias com a organização utilizando um utilitário da linha de comando ou script de Python de amostra. Após as contas serem registradas, os usuários poderão entrar na organização.
Dica:
É recomendado que você designe pelo menos uma conta enterprise como um administrador do seu portal e degrade ou exclua a conta inicial de administrador. Também é recomendado que você desabilite o botão Criar uma conta e a página de registro (signup.html) no site da web do portal, de forma que as pessoas não possam criar suas próprias contas. Para instruções completas, consulte Configurando um provedor de identidade compatível ao SAML com seu portal.
- Forneça informações de metadados para o provedor de identidade utilizando uma das três opções abaixo:
URL—Escolha esta opção se a URL dos metadados de federação do SimpleSAMLphp estiver acessível. Isto é normalmente https://<simpleSAML-server>/<saml-app-name>/saml2/idp/metadata.php.
Anotação:
Se o seu provedor de identidade enterprise incluir um certificado auto assinado, você poderá encontrar um erro ao tentar especificar a URL de HTTPS dos metadados. Este erro ocorre, pois o Portal for ArcGIS não pode verificar o certificado auto assinado do provedor de identidade. Alternativamente, utilize HTTP na URL, uma das outras opções abaixo ou configure seu provedor de identidade com um certificado confiável.
Arquivo—Escolha esta opção se a URL não estiver acessível. Salve os metadados da URL como um arquivo XML e transfira o arquivo no Portal for ArcGIS utilizando a opção Arquivo.
Parâmetros—Escolha esta opção se a URL ou arquivo não estiver acessível. Digite os valores manualmente e forneça os parâmetros solicitados: URL de login e certificado. Entre em contato com seu administrador SimpleSAMLphp para obtê-los.
- Defina as configurações avançadas conforme aplicáveis:
- Codificar Asserção—Selecione esta opção se SimpleSAMLphp for configurado para codificar respostas da asserção de SAML.
- Habilitar Pedido Registrado—Selecione esta opção para o Portal for ArcGIS registrar o pedido de autenticação do SAML enviado para SimpleSAMLphp.
- ID de Identidade—Atualize este valor para utilizar um novo ID de identidade exclusivamente para identificar seu portal para SimpleSAMLphp.
- Propagar saída para Provedor de Identidade—Selecione esta opção para o Portal for ArcGIS utiizar uma URL de Saída para o usuário sair do SimpleSAMLphp. Insira a URL para utilizar na configuração da URL de Saída. Se o provedor de identidade exigir que a URL de Saída esteja registrada, Habilitar Pedido Registrado precisa estar selecionado.
- URL de Saída—A URL do provedor de identidade ao utilizar para sair do usuário atualmente registrado. A URL de saída é normalmente https://idphost.domain.com/simplesaml/saml2/idp/SingleLogoutService.php. Esta URL é definida dentro do elemento SingleLogoutService no arquivo de metadados do IDP. A URL do arquivo de metadados é normalmente http://[simpleSAML-server]/simplesaml/saml2/idp/metadata.php.
As configurações Codificar Asserção e Habilitar Pedido Registrado utilizam o certificado samlcert no keystore do portal. Para utilizar um novo certificado, exclua o certificado samlcert, crie um novo certificado com o mesmo nome alternativo (samlcert) seguindo as etapas em Importar um certificado no portal e reinicie o portal.
- Opcionalmente forneça metadados para o portal sobre os
grupos enterprise no armazenamento de identidade:
- Entre no ArcGIS Portal Directory como um Administrador da sua organização. A URL está no formato https://webadaptorhost.domain.com/webadaptorname/portaladmin.
- Clique em Segurança > Configuração > Atualizar Armazenamento de Identidade.
- Posicione o JSON de configuração do grupo na caixa de texto Configuração do armazenamento de grupo (no formato JSON).
Copie o seguinte texto, e altere para conter as informações específicas para seu site:
{ "type": "LDAP", "properties": { "userPassword": "secret", "isPasswordEncrypted": "false", "user": "uid=admin,ou=system", "ldapURLForUsers": "ldaps://bar2:10636/ou=users,ou=ags,dc=example,dc=com", "ldapURLForRoles": "ldaps://bar2:10636/dc=example,dc=com", "usernameAttribute": "cn", "caseSensitive": "false", "userSearchAttribute": "cn", "memberAttributeInRoles": "member", "rolenameAttribute":"cn" } }
Na maioria dos casos, você somente precisará alterar os valores dos parâmetros user, userPassword, ldapURLForUsers e ldapURLForRoles. A URL para seu LDAP precisará ser fornecida pelo seu administrador de LDAP.
No exemplo acima, a URL LDAP se refere aos usuários dentro de uma OU (ou=users) específico. Se os usuários existem em OUs múltiplos, a URL LDAP pode apontar para um nível mais alto OU ou até o nível de raiz se necessário. Neste caso, a URL seria com esta ao invés:
"ldapURLForUsers": "ldaps://bar2:10636/dc=example,dc=com",
A conta que você utiliza para o parâmetro do usuário precisa de permissões para procurar os nomes de grupos na sua organização. Embora você digite a senha em texto claro, ela será codificada quando armazenada no diretório de configuração do portal ou visualizada.
Se o seu LDAP estiver configurado para diferenciar letra maiúscula e letra minúscula, configure o parâmetro caseSensitive para false.
- Ao finalizar a inserção de JSON para a configuração do armazenamento de usuário, clique em Atualizar Configuração para salvar suas alterações e reiniciar o portal.
Registrar o Portal for ArcGIS como o provedor de serviço confiável com SimpleSAMLphp
- Configure Portal for ArcGIS como um provedor de serviço confiável com SimpleSAML configurando o arquivo <SimpleSAMLphp_HOME>/metatadata/saml20-sp-remote.php file.
- Obtenha o arquivo XML de metadados da sua organização do Portal for ArcGIS.
Para obter o arquivo de metadados, entre na sua organização como um administrador e abra a página da sua organização. Clique no botão Editar Configurações, clique na guia Segurança e na seção Logins Enterprise, clique no botão Obter Provedor de Serviço.
- Converta o arquivo XML obtido no subetapa anterior para o formato PHP.
O SimpleSAMLphp espera que as informações de metadados do provedor de serviço sejam fornecidas no formato PHP. O SimpleSAMLPHP fornece um XML embutido no conversor de metadados PHP que por padrão está disponível como https://<simpleSAML-server>/<saml-app-name>/admin/metadata-converter.php na sua instalação do simpleSAMLphp. Utilize o conversor para converter o XML para PHP.
- Abra o arquivo metatadata/saml20-sp-remote.php e adicione a configuração do provedor de serviço no formato PHP criado na etapa 1.b.
Abaixo está um exemplo da configuração do provedor de serviço adicionada no arquivo de metadados.
/* The following is a Portal for ArcGIS organization service provider */ $metadata['webadaptorhost.domain.com.webadaptorname'] = array ( 'entityid' => ' webadaptorhost.domain.com.webadaptorname', 'name' => array ( 'en' => 'portal ', ), 'description' => array ( 'en' => 'portal ', ), 'OrganizationName' => array ( 'en' => 'portal ', ), 'OrganizationDisplayName' => array ( 'en' => 'portal ', ), 'url' => array ( 'en' => 'https://webadaptorhost.domain.com/webadaptorname', ), 'OrganizationURL' => array ( 'en' => 'https://webadaptorhost.domain.com/webadaptorname', ), 'contacts' => array ( ), 'metadata-set' => 'saml20-sp-remote', 'AssertionConsumerService' => array ( 0 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', 'Location' => 'https://webadaptorhost.domain.com/webadaptorname/sharing/rest/oauth2/saml/signin', 'index' => 1, ), 1 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://webadaptorhost.domain.com/webadaptorname/sharing/rest/oauth2/saml/signin', 'index' => 2, ), ), 'SingleLogoutService' => array ( ), );
- Obtenha o arquivo XML de metadados da sua organização do Portal for ArcGIS.
- Configure o atributo que foi validado como NameID no Portal for ArcGIS a partir do IdP do SimpleSAMLphp após a autenticação do usuário. Para fazer isto, adicione o atributo no final da configuração do provedor de serviço que você adicionou na etapa anterior.
No seguinte exemplo, uid foi validado como NameID pelo IdP do SimpleSAMLphp no Portal for ArcGIS após a autenticação do usuário. (Substitua webadaptorhost.domain.com.webadaptorname pela URL do seu portal.)
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'simplesaml.nameidattribute' => 'uid', /* The following indicates whether or not to send all the attributes received from the authentication source to the service provider. If true, it will send, otherwise it will not send all the attributes*/ 'simplesaml.attributes' => true, );
- Se você escolheu a configuração avançada Codificar Asserção ao registrar o SimpleSAMLphp como o provedor de identidade enterprise, adicione o atributo abaixo no final da configuração do provedor de serviço que você adicionou na etapa 1.
/* Whether assertions sent to this SP should be encrypted. The default value is FALSE. */ 'assertion.encryption' => true, );