Mam instancję ArcGIS 10.1 Server, która udostępnia bezpieczne usługi map w Internecie. Potrzebuję zakodować aplikację kliencką (którą aktualnie buduję przy użyciu interfejsu API ArcGIS Javascript w wersji 3.3), aby umożliwić użytkownikowi przeglądanie zabezpieczonych usług internetowych:
Myślę, że ten internetowy przykład ESRI to dobry początek.
Moja wola nie polega na pytaniu użytkownika o uwierzytelnienie KAŻDEJ usługi map, ponieważ już wiem, że WSZYSTKIE usługi map należą do niej / niego i dlatego są dla niej dostępne pod tą samą nazwą użytkownika i hasłem. W moim pomyśle monit o podanie poświadczeń powinien pojawić się tylko RAZ, a zatem kod JS powinien przekazywać poświadczenia do każdej usługi mapowania za pomocą pewnego rodzaju wywołania RESTful. Wydaje mi się, że interfejs API REST ArcGIS Server nie zapewnia takiego połączenia ... może się mylę.
Czy zatem ten „RESTful” sposób logowania do zabezpieczonych usług map jest możliwy dzięki ArcGIS Server (umożliwiając programowy dostęp do zabezpieczonych usług)? Jeśli tak, to czy ktoś z was może podać przykłady lub łącza do zasobów internetowych, które to wyjaśniają?
Odpowiedzi:
W końcu znalazłem to, czego szukałem: właściwy punkt końcowy sieci ArcGIS Server, którego mógłbym użyć do generowania tokenów!
Połączenie jest następujące:
który zwraca token do treści odpowiedzi HTTP i można wysłać go do każdego kolejnego żądania do zabezpieczonych zasobów bez ponownego monitowania o poświadczenia. Token musi być wartością
Cookie
nagłówka żądania, ponieważ jest on obecnie przechowywany w pliku cookie po stronie klienta.Ale ... cholera ! Ten generator tokenów NIE jest częścią API REST ArcGIS Server !!! Nie mogłem go znaleźć w dokumentacji online API ! Gdzie na świecie mogłem to znaleźć ???
Oznacza to, że ArcGIS Server nie ma struktury uwierzytelniania RESTful.
Na przykład, jeśli udostępniamy tę usługę mapowania w ramach interfejsu API ArcGIS REST:
/arcgis/rest/services/myDir/myMapService/MapServer/layers
i staramy się uzyskać ten zasób, to otrzymujemy z ArcGIS Server odpowiedź zawierającą200: OK
kod stanu i dokument HTML w treści (HTML to formularz logowania ). Po niedoszłym RESTful'u spodziewałbym się, że żądanie zwróciło mi401: Authentication Required
kod statusu wraz zWWW-Authenticate
nagłówkiem ... Sam to przetestowałem za pomocą programu klienta REST.źródło
Zobacz, jak działa ArcGIS Server Security.
Zasadniczo będziesz musiał utworzyć użytkowników i grupy oraz dać określone prawa użytkownika do określonych usług.
Gdy to zrobisz, musisz użyć zabezpieczeń opartych na Tokenach w swojej aplikacji JavaScript. Oznacza to, że pytasz użytkownika o jego nazwę użytkownika i hasło. To jest wysyłane do ArcGIS Server, który sprawdza poświadczenia i odsyła token. Ten token służy do sprawdzania poprawności użytkownika za każdym razem, gdy żądany jest zasób.
Jako programista wyślesz ten token do każdej usługi mapowej, usługi zapytań itp.
Ta strona zawiera szczegółowe informacje na temat korzystania z usług opartych na tokenach .
ArcGIS Javascript API jest już wyposażony w klasę, IdentityManager, aby to zrobić.
Oto kilka przykładów korzystania z Menedżera tożsamości.
źródło
W ArcGIS API for JavaScript znajduje się widget o nazwie Identity Manager, który odpowiada dokładnie temu, co chcesz zrobić. Sprawdź przykłady, które używają menedżera tożsamości, aby zobaczyć, jak to działa.
Próbka połączona przez Devdatta, mimo że jest poprawna, jest sposobem na to, aby zrobić to wcześniej i wymaga znacznie więcej kodu, który jest niezbędny teraz, gdy uwierzytelnianie dla bezpiecznych usług jest wprowadzone do API.
źródło
Możesz także użyć serwera proxy, aby Twoja aplikacja nigdy nie pytała o nazwę użytkownika i hasło. I nie musisz ustawiać tokena, aby uzyskiwał dostęp do zabezpieczonych usług za każdym razem, gdy uzyskujesz do nich dostęp. Jedyne, co musisz zrobić, to w pliku JS ustawić następujące ustawienia: esriConfig.defaults.io.proxyUrl = "/proxy.ashx"; (np. http: //localhost//DotNet/proxy.ashx ; esriConfig.defaults.io.alwaysUseProxy = true; w pliku proxy.config zapewnij wszystkie usługi, z których korzystasz w aplikacji.
Zobacz https: //github.com/Esri/resource-proxy/, aby uzyskać więcej informacji na temat serwera proxy.Aby uzyskać uwierzytelnianie oparte na tokenach, w pliku proxy.config należy dodać adres URL, nazwę użytkownika, hasło i dopasowanie Tylko cała treść.
źródło