Eu tenho uma instância do ArcGIS 10.1 Server expondo serviços de mapas seguros na Internet. Minha necessidade é codificar um aplicativo cliente (que estou construindo atualmente usando a versão 3.3 da API Javascript do ArcGIS), permitindo que o usuário visualize os serviços da web protegidos:
Penso que este exemplo online de ESRI é um bom começo.
Minha vontade é não solicitar ao usuário CADA autenticação de serviço de mapas, porque eu já sei que TODOS os serviços de mapas pertencem a ele e, portanto, são acessíveis por ele com o mesmo nome de usuário e senha. Na minha ideia, o prompt de credenciais deve aparecer apenas UMA VEZ e, portanto, o código JS deve alimentar as credenciais para cada serviço de mapas por meio de algum tipo de chamada de login RESTful. Para mim, não parece que a API REST do ArcGIS Server esteja fornecendo essa chamada ... talvez eu esteja errado.
Portanto, essa maneira "RESTful" de efetuar login em serviços de mapas protegidos é viável com o ArcGIS Server (possibilitando acessar serviços protegidos programaticamente)? Em caso afirmativo, algum de vocês pode fornecer exemplos ou links para recursos da Web que explicam isso?
Respostas:
Finalmente encontrei o que estava procurando: um ponto de extremidade Web do ArcGIS Server adequado que eu pudesse usar para gerar tokens!
A chamada é esta:
que devolve o token ao corpo da resposta HTTP e pode-se enviá-lo para qualquer solicitação adicional a recursos protegidos sem que sejam solicitadas credenciais novamente. O token deve ser o valor do
Cookie
cabeçalho da solicitação, pois atualmente está armazenado em um cookie no lado do cliente.Mas ... caramba ! Este gerador de token NÃO faz parte da API REST do ArcGIS Server !!! Não consegui encontrá-lo na documentação da API online ! Onde no mundo eu poderia encontrar isso ???
Isso significa que o ArcGIS Server não possui uma estrutura de autenticação RESTful.
Por exemplo, se tivermos este serviço de mapas exposto na API REST do ArcGIS:
/arcgis/rest/services/myDir/myMapService/MapServer/layers
e tentarmos obter esse recurso, o que obtemos do ArcGIS Server é uma resposta com um200: OK
código de status e um documento HTML no corpo (o HTML é um formulário de login ) Em um login que seria RESTful, eu esperaria que a solicitação me devolvesse um401: Authentication Required
código de status junto com umWWW-Authenticate
cabeçalho ... Eu testei tudo isso usando um programa cliente REST.fonte
Veja como o ArcGIS Server Security funciona.
Basicamente, você precisará criar usuários e grupos e conceder direitos a um usuário específico sobre determinados serviços.
Depois de fazer isso, você precisará usar a segurança baseada em token em seu aplicativo JavaScript. O que isso significa é que você solicita ao usuário o nome de usuário e a senha. Isso é enviado para o ArcGIS Server, que valida as credenciais e envia de volta um token. Este token é usado para validar o usuário sempre que um recurso é solicitado.
Você como programador enviará esse token para todos os serviços de mapas, serviços de consulta etc.
Esta página detalha como usar os serviços baseados em token .
A API Javascript do ArcGIS já vem com uma classe, o IdentityManager, para fazer isso.
Aqui estão alguns exemplos de como usar o Identity Manager.
fonte
Na API do ArcGIS para JavaScript, há um widget chamado Identity Manager que aborda exatamente o que você deseja fazer. Confira exemplos que usam o gerenciador de identidades para ver como ele funciona.
A amostra vinculada pelo Devdatta, embora válida, é a maneira pré-Identity Manager de fazer isso e envolve muito mais código que é necessário agora que a autenticação para serviços seguros é inserida na API.
fonte
Você também pode usar o proxy, para que seu aplicativo nunca solicite nome de usuário e senha. E você não precisa configurar o Token para acessar serviços protegidos sempre que os estiver acessando. A única coisa que você precisa fazer é no seu arquivo JS, defina o seguinte: esriConfig.defaults.io.proxyUrl = "/proxy.ashx"; (por exemplo,. http: //localhost//DotNet/proxy.ashx ; esriConfig.defaults.io.alwaysUseProxy = true; E em seu arquivo proxy.config, fornecer todos os serviços que você está consumindo em sua aplicação.
Consulte https: //github.com/Esri/resource-proxy/ Para obter mais detalhes sobre o proxy, como você deseja autenticação baseada em token, no seu arquivo proxy.config, é necessário adicionar apenas o URL, o nome de usuário, a senha e o conteúdo matchAll.
fonte