diff --git a/src/main/java/com/esri/samples/portal/token_authentication/README.md b/src/main/java/com/esri/samples/portal/token_authentication/README.md new file mode 100644 index 0000000000..5d4588cd0a --- /dev/null +++ b/src/main/java/com/esri/samples/portal/token_authentication/README.md @@ -0,0 +1,40 @@ +
Access a map service that is secured with an ArcGIS token-based authentication.
+ +Applications often require accessing data from private map services on remote servers. A token authentication system can be used to allow app users who hold a valid username and password to access the remote service.
+ +When starting the sample, the user is challenged for an ArcGIS Online login to view the protected map service. Enter a username and password for an ArcGIS Online named user account (such as your ArcGIS for Developers account). Upon successful authentication, the protected map service will display in the map.
+ +AuthenticationChallengeHandler
using the DefaultAuthenticationChallengeHandler
to handle the challenges sent by the protected map service.AuthenticationChallengeHandler
used by the AuthenticationManager
.Portal
to ArcGIS Online.PortalItem
for the protected web map using the Portal
and Item ID of the protected map service as parametersArcGISMap
from the portal item, and display it in a MapView
authentication, map service, security, token
\ No newline at end of file diff --git a/src/main/java/com/esri/samples/portal/token_authentication/TokenAuthentication.png b/src/main/java/com/esri/samples/portal/token_authentication/TokenAuthentication.png new file mode 100644 index 0000000000..00ab728da3 Binary files /dev/null and b/src/main/java/com/esri/samples/portal/token_authentication/TokenAuthentication.png differ diff --git a/src/main/java/com/esri/samples/portal/token_authentication/TokenAuthenticationSample.java b/src/main/java/com/esri/samples/portal/token_authentication/TokenAuthenticationSample.java new file mode 100644 index 0000000000..fbdbb9bbc9 --- /dev/null +++ b/src/main/java/com/esri/samples/portal/token_authentication/TokenAuthenticationSample.java @@ -0,0 +1,97 @@ +/* + * Copyright 2019 Esri + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.esri.samples.portal.token_authentication; + +import javafx.application.Application; +import javafx.scene.Scene; +import javafx.scene.layout.StackPane; +import javafx.stage.Stage; + +import com.esri.arcgisruntime.mapping.ArcGISMap; +import com.esri.arcgisruntime.mapping.view.MapView; +import com.esri.arcgisruntime.portal.Portal; +import com.esri.arcgisruntime.portal.PortalItem; +import com.esri.arcgisruntime.security.AuthenticationChallengeHandler; +import com.esri.arcgisruntime.security.AuthenticationManager; +import com.esri.arcgisruntime.security.DefaultAuthenticationChallengeHandler; + +public class TokenAuthenticationSample extends Application { + + private MapView mapView; + + @Override + public void start(Stage stage) { + + try { + // create stack pane and application scene + StackPane stackPane = new StackPane(); + Scene scene = new Scene(stackPane); + + // set title, size, and add scene to stage + stage.setTitle("Token Authentication Sample"); + stage.setWidth(800); + stage.setHeight(700); + stage.setScene(scene); + stage.show(); + + // set up an authentication handler to take credentials for access to the protected map service + AuthenticationChallengeHandler authenticationChallengeHandler = new DefaultAuthenticationChallengeHandler(); + AuthenticationManager.setAuthenticationChallengeHandler(authenticationChallengeHandler); + + // create a portal to ArcGIS Online + Portal portal = new Portal("https://www.arcgis.com/"); + + // create a portal item using the portal and the item id of a protected map service + PortalItem portalItem = new PortalItem(portal, "e5039444ef3c48b8a8fdc9227f9be7c1"); + + // create a map with the portal item + ArcGISMap map = new ArcGISMap(portalItem); + + // set the map to be displayed in the map view + mapView = new MapView(); + mapView.setMap(map); + + // add the map view to stack pane + stackPane.getChildren().add(mapView); + + } catch (Exception e) { + // on any error, display the stack trace. + e.printStackTrace(); + } + } + + /** + * Stops and releases all resources used in application. + */ + @Override + public void stop() { + + if (mapView != null) { + mapView.dispose(); + } + } + + /** + * Opens and runs application. + * + * @param args arguments passed to this application + */ + public static void main(String[] args) { + + Application.launch(args); + } +}