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 @@ +

Token authentication

+ +

Access a map service that is secured with an ArcGIS token-based authentication.

+ +

+ +

Use case

+ +

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.

+ +

How to use the sample

+ +

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.

+ +

How it works

+ +
    +
  1. Create an AuthenticationChallengeHandler using the DefaultAuthenticationChallengeHandler to handle the challenges sent by the protected map service.
  2. +
  3. Set the AuthenticationChallengeHandler used by the AuthenticationManager.
  4. +
  5. Create a Portal to ArcGIS Online.
  6. +
  7. Create a PortalItem for the protected web map using the Portal and Item ID of the protected map service as parameters
  8. +
  9. Create an ArcGISMap from the portal item, and display it in a MapView
  10. +
  11. Set the map to display in the map view.
  12. +
+ +

Relevant API

+ + + +

Tags

+ +

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); + } +}