Saya memiliki instance ArcGIS 10.1 Server yang mengekspos layanan peta aman di Internet. Kebutuhan saya adalah untuk membuat kode aplikasi klien (yang saat ini saya bangun menggunakan versi 3.3 dari ArcGIS Javascript API) memungkinkan pengguna untuk melihat layanan web yang diamankan tersebut:
Saya pikir contoh ESRI online ini adalah awal yang baik.
Keinginan saya adalah agar pengguna tidak diminta untuk SETIAP otentikasi layanan peta karena saya sudah tahu bahwa SEMUA layanan peta miliknya dan karenanya dapat diakses olehnya di bawah nama pengguna & kata sandi yang sama. Dalam ide saya, permintaan kredensial akan muncul SEKALI saja dan oleh karena itu kode JS harus memberi makan kredensial ke setiap layanan peta melalui semacam panggilan masuk yang TENANG. Bagi saya sepertinya ArcGIS Server REST API tidak menyediakan panggilan seperti itu ... mungkin saya salah.
Oleh karena itu, apakah ini cara "RESTful" untuk masuk ke layanan peta aman yang layak dengan ArcGIS Server (memungkinkan untuk mengakses layanan aman secara terprogram)? Jika demikian, dapatkah Anda memberikan contoh atau tautan ke sumber daya web yang menjelaskan hal ini?
Jawaban:
Saya akhirnya menemukan apa yang saya cari: titik akhir web Server ArcGIS yang tepat yang dapat saya gunakan untuk menghasilkan token!
Panggilannya adalah ini:
yang mengembalikan token ke badan respons HTTP, dan orang dapat mengirimkannya ke setiap permintaan lebih lanjut ke sumber daya aman tanpa diminta kredensial lagi. Token harus menjadi nilai untuk
Cookie
header permintaan, karena saat ini disimpan ke dalam cookie di sisi klien.Tapi ... sial ! Generator token ini BUKAN bagian dari ArcGIS Server REST API !!! Saya tidak dapat menemukannya di dokumentasi API online ! Di mana di dunia aku bisa menemukannya ???
Ini berarti bahwa ArcGIS Server tidak memiliki kerangka kerja otentikasi yang tenang.
Sebagai contoh, jika kita memiliki layanan peta ini terkena di bawah ArcGIS REST API:
/arcgis/rest/services/myDir/myMapService/MapServer/layers
dan kami mencoba untuk MENDAPATKAN sumber daya ini, apa yang kita dapatkan dari ArcGIS Server adalah respons yang memiliki200: OK
kode status dan dokumen HTML di dalam tubuh (HTML adalah formulir login ). Dari calon yang masuk RESTful, saya akan berharap bahwa permintaan memberi saya kembali401: Authentication Required
kode status bersama denganWWW-Authenticate
header ... Saya menguji semua ini sendiri menggunakan program klien REST.sumber
Silakan lihat di Bagaimana ArcGIS Server Security bekerja.
Pada dasarnya, Anda perlu membuat pengguna dan grup, dan memberikan hak Pengguna tertentu atas layanan tertentu.
Setelah Anda selesai melakukannya, maka Anda perlu menggunakan keamanan berbasis Token di Aplikasi JavaScript Anda. Artinya, Anda meminta UserName & kata sandi mereka. Itu dikirim ke Server ArcGIS, yang memvalidasi Kredensial, dan mengirimkan kembali token. Token ini digunakan untuk memvalidasi pengguna setiap kali sumber daya diminta.
Anda sebagai programmer akan mengirimkan token ini ke setiap layanan peta, layanan permintaan, dll.
Halaman ini merinci cara menggunakan Layanan Berbasis Token .
ArcGIS Javascript API sudah dilengkapi dengan Class, IdentityManager untuk melakukan ini.
Berikut adalah beberapa contoh tentang cara menggunakan Identity Manager.
sumber
Di ArcGIS API untuk JavaScript, ada widget bernama Identity Manager yang membahas apa yang ingin Anda lakukan. Lihat sampel yang menggunakan manajer identitas untuk melihat cara kerjanya.
Sampel yang ditautkan oleh Devdatta, meskipun valid, adalah cara pre-Identity Manager dalam melakukan ini dan melibatkan lebih banyak kode yang diperlukan sekarang karena otentikasi untuk layanan aman dimasukkan ke dalam API.
sumber
Anda juga dapat menggunakan Proksi, sehingga aplikasi Anda tidak akan pernah meminta UserName dan Kata Sandi. Dan Anda tidak perlu mengatur Token untuk mengakses layanan aman setiap kali Anda mengaksesnya. Satu-satunya hal yang perlu Anda lakukan adalah di file JS Anda, atur yang berikut ini: esriConfig.defaults.io.proxyUrl = "/proxy.ashx"; (misalnya., http: //localhost//DotNet/proxy.ashx ; esriConfig.defaults.io.alwaysUseProxy = true; Dan dalam file proxy.config Anda, berikan semua layanan yang Anda konsumsi dalam aplikasi Anda.
Rujuk https: //github.com/Esri/resource-proxy/ untuk detail lebih lanjut tentang proxy. Seperti yang Anda inginkan otentikasi berbasis token, dalam file proxy.config Anda, Anda perlu menambahkan url, nama pengguna, kata sandi, dan cocokkan semua konten saja.
sumber