<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Arcgis enterprise authentication Using token in Kotlin Maps SDK Questions</title>
    <link>https://community.esri.com/t5/kotlin-maps-sdk-questions/arcgis-enterprise-authentication-using-token/m-p/1382664#M345</link>
    <description>&lt;P&gt;Hi everyone, I try to use token generate from arcgis server which are hosted locally in our server (arcgis Enterprise).&lt;/P&gt;&lt;P&gt;Im beginner in arcgis and I try to read sample from the documentation, however mostly are for arcgis online.&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;package &lt;/SPAN&gt;com.example.signup&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;android.os.Bundle&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;android.util.Log&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;android.widget.Toast&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;androidx.appcompat.app.AppCompatActivity&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;androidx.databinding.DataBindingUtil&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.ApiKey&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.ArcGISEnvironment&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.mapping.ArcGISMap&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.mapping.BasemapStyle&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.mapping.layers.ArcGISMapImageLayer&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.mapping.view.MapView&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.example.signup.databinding.ActivityProfileBinding&lt;BR /&gt;&lt;SPAN&gt;class &lt;/SPAN&gt;Profile : AppCompatActivity() {&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;private val &lt;/SPAN&gt;&lt;SPAN&gt;activityProfileBinding&lt;/SPAN&gt;: ActivityProfileBinding &lt;SPAN&gt;by &lt;/SPAN&gt;&lt;SPAN&gt;lazy &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;BR /&gt;&lt;/SPAN&gt;        DataBindingUtil.setContentView(&lt;SPAN&gt;this, &lt;/SPAN&gt;R.layout.&lt;SPAN&gt;activity_profile&lt;/SPAN&gt;)&lt;BR /&gt;    &lt;SPAN&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;private val &lt;/SPAN&gt;&lt;SPAN&gt;mapView&lt;/SPAN&gt;: MapView &lt;SPAN&gt;by &lt;/SPAN&gt;&lt;SPAN&gt;lazy &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;BR /&gt;&lt;/SPAN&gt;        &lt;SPAN&gt;activityProfileBinding&lt;/SPAN&gt;.&lt;SPAN&gt;mapView&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;override fun &lt;/SPAN&gt;&lt;SPAN&gt;onCreate&lt;/SPAN&gt;(savedInstanceState: Bundle?) {&lt;BR /&gt;        &lt;SPAN&gt;super&lt;/SPAN&gt;.onCreate(savedInstanceState)&lt;BR /&gt;&lt;BR /&gt;        &lt;SPAN&gt;lifecycle&lt;/SPAN&gt;.addObserver(&lt;SPAN&gt;mapView&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;        setApiKey()&lt;BR /&gt;&lt;BR /&gt;        setupMap()&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;    }&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;private fun &lt;/SPAN&gt;&lt;SPAN&gt;setupMap&lt;/SPAN&gt;() {&lt;BR /&gt;&lt;BR /&gt;        &lt;SPAN&gt;val &lt;/SPAN&gt;map = ArcGISMap(BasemapStyle.ArcGISImagery)&lt;BR /&gt;        &lt;SPAN&gt;mapView&lt;/SPAN&gt;.&lt;SPAN&gt;map &lt;/SPAN&gt;= map&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// Create an ArcGIS Map Image Layer for the ESRI map server layer&lt;BR /&gt;&lt;/SPAN&gt;        &lt;SPAN&gt;val &lt;/SPAN&gt;mapServiceUrl = &lt;SPAN&gt;"https://10.1.156.146:6443/arcgis/rest/services/Jalan_Raya/MapServer"&lt;BR /&gt;&lt;/SPAN&gt;        &lt;SPAN&gt;val &lt;/SPAN&gt;mapImageLayer = ArcGISMapImageLayer(mapServiceUrl)&lt;BR /&gt;&lt;BR /&gt;        map.&lt;SPAN&gt;operationalLayers&lt;/SPAN&gt;.add(mapImageLayer)&lt;BR /&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;    }&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;private fun &lt;/SPAN&gt;&lt;SPAN&gt;setApiKey&lt;/SPAN&gt;() {&lt;BR /&gt;&lt;BR /&gt;        &lt;SPAN&gt;// It is not best practice to store API keys in source code. We have you insert one here&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;        // to streamline this tutorial.&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;        ArcGISEnvironment.&lt;SPAN&gt;apiKey &lt;/SPAN&gt;= ApiKey.create(&lt;SPAN&gt;"AAPK88529847185949ea825e3574ecc6c9b1qRO6NownHM5HmeA7l4dVMvm180y_oJcgTjabZ5qq3gdntEyRiFsBdzCVm7WItErn"&lt;/SPAN&gt;)&lt;BR /&gt;    }&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;private fun &lt;/SPAN&gt;&lt;SPAN&gt;showError&lt;/SPAN&gt;(message: String) {&lt;BR /&gt;        Toast.makeText(&lt;SPAN&gt;applicationContext&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;message&lt;SPAN&gt;, &lt;/SPAN&gt;Toast.&lt;SPAN&gt;LENGTH_LONG&lt;/SPAN&gt;).show()&lt;BR /&gt;        Log.e(&lt;SPAN&gt;localClassName&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;message)&lt;BR /&gt;    }&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;This is the error that i got.&lt;BR /&gt;A network authentication error occurred when accessing (ip numbers). A credential may be required. For more information see &lt;A href="https://developers.arcgis.com/kotlin/security-and-authentication/" target="_blank"&gt;https://developers.arcgis.com/kotlin/security-and-authentication/&lt;/A&gt;.&lt;BR /&gt;can someone explain this?&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 15 Feb 2024 04:44:54 GMT</pubDate>
    <dc:creator>AsyrafArd</dc:creator>
    <dc:date>2024-02-15T04:44:54Z</dc:date>
    <item>
      <title>Arcgis enterprise authentication Using token</title>
      <link>https://community.esri.com/t5/kotlin-maps-sdk-questions/arcgis-enterprise-authentication-using-token/m-p/1382664#M345</link>
      <description>&lt;P&gt;Hi everyone, I try to use token generate from arcgis server which are hosted locally in our server (arcgis Enterprise).&lt;/P&gt;&lt;P&gt;Im beginner in arcgis and I try to read sample from the documentation, however mostly are for arcgis online.&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;package &lt;/SPAN&gt;com.example.signup&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;android.os.Bundle&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;android.util.Log&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;android.widget.Toast&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;androidx.appcompat.app.AppCompatActivity&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;androidx.databinding.DataBindingUtil&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.ApiKey&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.ArcGISEnvironment&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.mapping.ArcGISMap&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.mapping.BasemapStyle&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.mapping.layers.ArcGISMapImageLayer&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.arcgismaps.mapping.view.MapView&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;com.example.signup.databinding.ActivityProfileBinding&lt;BR /&gt;&lt;SPAN&gt;class &lt;/SPAN&gt;Profile : AppCompatActivity() {&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;private val &lt;/SPAN&gt;&lt;SPAN&gt;activityProfileBinding&lt;/SPAN&gt;: ActivityProfileBinding &lt;SPAN&gt;by &lt;/SPAN&gt;&lt;SPAN&gt;lazy &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;BR /&gt;&lt;/SPAN&gt;        DataBindingUtil.setContentView(&lt;SPAN&gt;this, &lt;/SPAN&gt;R.layout.&lt;SPAN&gt;activity_profile&lt;/SPAN&gt;)&lt;BR /&gt;    &lt;SPAN&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;private val &lt;/SPAN&gt;&lt;SPAN&gt;mapView&lt;/SPAN&gt;: MapView &lt;SPAN&gt;by &lt;/SPAN&gt;&lt;SPAN&gt;lazy &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;BR /&gt;&lt;/SPAN&gt;        &lt;SPAN&gt;activityProfileBinding&lt;/SPAN&gt;.&lt;SPAN&gt;mapView&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;override fun &lt;/SPAN&gt;&lt;SPAN&gt;onCreate&lt;/SPAN&gt;(savedInstanceState: Bundle?) {&lt;BR /&gt;        &lt;SPAN&gt;super&lt;/SPAN&gt;.onCreate(savedInstanceState)&lt;BR /&gt;&lt;BR /&gt;        &lt;SPAN&gt;lifecycle&lt;/SPAN&gt;.addObserver(&lt;SPAN&gt;mapView&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;        setApiKey()&lt;BR /&gt;&lt;BR /&gt;        setupMap()&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;    }&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;private fun &lt;/SPAN&gt;&lt;SPAN&gt;setupMap&lt;/SPAN&gt;() {&lt;BR /&gt;&lt;BR /&gt;        &lt;SPAN&gt;val &lt;/SPAN&gt;map = ArcGISMap(BasemapStyle.ArcGISImagery)&lt;BR /&gt;        &lt;SPAN&gt;mapView&lt;/SPAN&gt;.&lt;SPAN&gt;map &lt;/SPAN&gt;= map&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// Create an ArcGIS Map Image Layer for the ESRI map server layer&lt;BR /&gt;&lt;/SPAN&gt;        &lt;SPAN&gt;val &lt;/SPAN&gt;mapServiceUrl = &lt;SPAN&gt;"https://10.1.156.146:6443/arcgis/rest/services/Jalan_Raya/MapServer"&lt;BR /&gt;&lt;/SPAN&gt;        &lt;SPAN&gt;val &lt;/SPAN&gt;mapImageLayer = ArcGISMapImageLayer(mapServiceUrl)&lt;BR /&gt;&lt;BR /&gt;        map.&lt;SPAN&gt;operationalLayers&lt;/SPAN&gt;.add(mapImageLayer)&lt;BR /&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;    }&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;private fun &lt;/SPAN&gt;&lt;SPAN&gt;setApiKey&lt;/SPAN&gt;() {&lt;BR /&gt;&lt;BR /&gt;        &lt;SPAN&gt;// It is not best practice to store API keys in source code. We have you insert one here&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;        // to streamline this tutorial.&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;        ArcGISEnvironment.&lt;SPAN&gt;apiKey &lt;/SPAN&gt;= ApiKey.create(&lt;SPAN&gt;"AAPK88529847185949ea825e3574ecc6c9b1qRO6NownHM5HmeA7l4dVMvm180y_oJcgTjabZ5qq3gdntEyRiFsBdzCVm7WItErn"&lt;/SPAN&gt;)&lt;BR /&gt;    }&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;private fun &lt;/SPAN&gt;&lt;SPAN&gt;showError&lt;/SPAN&gt;(message: String) {&lt;BR /&gt;        Toast.makeText(&lt;SPAN&gt;applicationContext&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;message&lt;SPAN&gt;, &lt;/SPAN&gt;Toast.&lt;SPAN&gt;LENGTH_LONG&lt;/SPAN&gt;).show()&lt;BR /&gt;        Log.e(&lt;SPAN&gt;localClassName&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;message)&lt;BR /&gt;    }&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;This is the error that i got.&lt;BR /&gt;A network authentication error occurred when accessing (ip numbers). A credential may be required. For more information see &lt;A href="https://developers.arcgis.com/kotlin/security-and-authentication/" target="_blank"&gt;https://developers.arcgis.com/kotlin/security-and-authentication/&lt;/A&gt;.&lt;BR /&gt;can someone explain this?&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Feb 2024 04:44:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/kotlin-maps-sdk-questions/arcgis-enterprise-authentication-using-token/m-p/1382664#M345</guid>
      <dc:creator>AsyrafArd</dc:creator>
      <dc:date>2024-02-15T04:44:54Z</dc:date>
    </item>
    <item>
      <title>Re: Arcgis enterprise authentication Using token</title>
      <link>https://community.esri.com/t5/kotlin-maps-sdk-questions/arcgis-enterprise-authentication-using-token/m-p/1383078#M347</link>
      <description>&lt;P&gt;The error signifies that you are trying to access a resource that is secured and not public. You will need to provide username/password for the NetworkAuthenticationChallenge to access that service.&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;You can provide username/password by providing the implementation for the &lt;A href="https://developers.arcgis.com/kotlin/api-reference/arcgis-maps-kotlin/com.arcgismaps.httpcore.authentication/-network-authentication-challenge-handler/index.html" target="_self" rel="nofollow noopener noreferrer"&gt;NetworkAuthenticationChallengeHandler interface&lt;/A&gt;&lt;/P&gt;&lt;LI-CODE lang="kotlin"&gt;class PasswordCredentialAuthenticator(private val passwordCredential: PasswordCredential) :

NetworkAuthenticationChallengeHandler { 

override suspend fun handleNetworkAuthenticationChallenge(challenge: NetworkAuthenticationChallenge): NetworkAuthenticationChallengeResponse {
    return when (challenge.networkAuthenticationType) {
          NetworkAuthenticationType.UsernamePassword -&amp;gt; {
               NetworkAuthenticationChallengeResponse.ContinueWithCredential(passwordCredential)
               }
            else -&amp;gt; NetworkAuthenticationChallengeResponse.Cancel
          }
      }
}&lt;/LI-CODE&gt;&lt;P&gt;&lt;SPAN&gt;and in your code you will set an instance of it on the AuthenticationManager,&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;LI-CODE lang="kotlin"&gt;val passwordCredential = PasswordCredential("username", "password")
ArcGISEnvironment.authenticationManager.networkAuthenticationChallengeHandler =
PasswordCredentialAuthenticator(passwordCredential)&lt;/LI-CODE&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Thu, 15 Feb 2024 20:20:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/kotlin-maps-sdk-questions/arcgis-enterprise-authentication-using-token/m-p/1383078#M347</guid>
      <dc:creator>PuneetPrakash</dc:creator>
      <dc:date>2024-02-15T20:20:18Z</dc:date>
    </item>
  </channel>
</rss>

