Token Authentication - Known User

This sample demonstrates accessing secured services using ArcGIS token-based authentication. Token-based authentication is supported for ArcGIS Server, ArcGIS Online, and ArcGIS Enterprise version 10.2 or earlier. In this sample, a hard-coded username and password is used to get an ArcGIS token for accessing a secured resource. This process is seamless to the user, since no dialog appears to prompt for the username and password. This sample provides a basic example, in a real-world sceneario, better protection of the username and password would be required (calling a secured web service to get the token, for example). To see an example of using the ArcGIS Runtime SDK for .NET AuthenticationManager to prompt for credentials, see the Token Secured Services (Challenge method) sample.

Secure service loaded using hard-coded token credentials

Code

<UserControl x:Class="ArcGISRuntime.WPF.Samples.TokenSecuredKnownUser.TokenSecuredKnownUser"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:esri="http://schemas.esri.com/arcgis/runtime/2013">
    <Grid x:Name="layoutGrid">
        <esri:MapView x:Name="MyMapView">
            <esri:Map>
                <!-- This layer is public and does not require credentials -->
                <esri:ArcGISTiledLayer Name="World Street Map - Public"
					Source="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
                <!-- This layer is secured with ArcGIS tokens and requires a login -->
                <!--username: user1 | password: user1-->
                <esri:ArcGISMapImageLayer Name="USA - Secure"
					Source="http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA_secure_user1/MapServer" />
            </esri:Map>
        </esri:MapView>

        <!-- Layer listing with status -->
        <Border Background="White" BorderBrush="Black" BorderThickness="2" 
                Margin="30" 
                MaxWidth="500"
				HorizontalAlignment="Right" VerticalAlignment="Top">
            <StackPanel>
                <TextBlock FontSize="14" FontWeight="Bold"
                           Margin="4" 
                           Text="Map Layers (with status)" />
                <ListView x:Name="listLayerStatus" 
                          Padding="6" 
                          ItemsSource="{Binding ElementName=MyMapView, Path=Map.AllLayers}">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <TextBlock Text="{Binding Name}" 
                                           HorizontalAlignment="Left" />
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Margin="20,0,0,5" 
                                               FontWeight="Bold">
                                        <TextBlock.Style>
                                            <Style TargetType="{x:Type TextBlock}">
                                                <Style.Triggers>
                                                    <DataTrigger Binding="{Binding LoadStatus}" 
                                                                 Value="2">
                                                        <Setter Property="Foreground" Value="Red" />
                                                        <Setter Property="Text" Value="Access Denied" />
                                                    </DataTrigger>
                                                    <DataTrigger Binding="{Binding LoadStatus}" Value="0">
                                                        <Setter Property="Foreground" Value="Green" />
                                                        <Setter Property="Text" Value="Access Granted" />
                                                    </DataTrigger>
                                                </Style.Triggers>

                                                <Style.Setters>
                                                    <Setter Property="Foreground" Value="Black" />
                                                    <Setter Property="Text" Value="Initializing" />
                                                </Style.Setters>
                                            </Style>
                                        </TextBlock.Style>
                                    </TextBlock>
                                </StackPanel>
                            </StackPanel>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </StackPanel>
        </Border>
    </Grid>
</UserControl>


In this topic
  1. Code