<?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 Re: Token authentication in 100.2.1 in Java Maps SDK Questions</title>
    <link>https://community.esri.com/t5/java-maps-sdk-questions/token-authentication-in-100-2-1/m-p/483749#M1487</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi David,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We tried to address this in this topic,&amp;nbsp;&lt;A class="link-titled" href="https://developers.arcgis.com/java/latest/guide/access-the-arcgis-platform.htm#ESRI_SECTION1_2513881AFEDD4B1688E614554463EB71" title="https://developers.arcgis.com/java/latest/guide/access-the-arcgis-platform.htm#ESRI_SECTION1_2513881AFEDD4B1688E614554463EB71"&gt;Access the ArcGIS platform—ArcGIS Runtime SDK for Java | ArcGIS for Developers&lt;/A&gt;&amp;nbsp;, and with this example -&amp;nbsp;&lt;A class="link-titled" href="https://developers.arcgis.com/java/latest/sample-code/oauthentication.htm" title="https://developers.arcgis.com/java/latest/sample-code/oauthentication.htm"&gt;OAuthentication—ArcGIS Runtime SDK for Java | ArcGIS for Developers&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://developers.arcgis.com/labs/java/access-private-layers/" title="https://developers.arcgis.com/labs/java/access-private-layers/"&gt;Access private layers | ArcGIS for Developers&lt;/A&gt;&amp;nbsp; - This DevLab may be good to check out, too.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Let us know if these are not helpful, and what we can do to make the process clearer. Thanks!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 11 May 2018 03:59:09 GMT</pubDate>
    <dc:creator>EricBader</dc:creator>
    <dc:date>2018-05-11T03:59:09Z</dc:date>
    <item>
      <title>Token authentication in 100.2.1</title>
      <link>https://community.esri.com/t5/java-maps-sdk-questions/token-authentication-in-100-2-1/m-p/483748#M1486</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm trying to authenticate with an &lt;SPAN style="background-color: #ffffff;"&gt;ArcGIS Enterprise Portal using ArcGIS Tokens (not OAuth).&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color: #4c4c4c; background-color: #ffffff;"&gt;It looks like the most recent version of the SDK added some capabilities in this area, such as the new method &lt;A href="https://developers.arcgis.com/java/latest/api-reference/reference/com/esri/arcgisruntime/security/UserCredential.html#createFromToken(java.lang.String, java.lang.String)"&gt;UserCredential.createFromToken()&lt;/A&gt;. But it is still unclear how to use this within the context of an AuthenticationManager.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #4c4c4c; background-color: #ffffff;"&gt;What is the recommended process for obtaining tokens for an&amp;nbsp;&lt;SPAN&gt;ArcGIS Enterprise portal?&amp;nbsp;I know the URL of the Portal that I am connecting to, and the URL at which tokens are generated, but I don't see any intuitive way to pass a request to the token generation service.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #4c4c4c; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #4c4c4c; background-color: #ffffff;"&gt;&lt;SPAN&gt;This is a follow-up to &lt;A _jive_internal="true" href="https://community.esri.com/message/673633-re-token-authentication-in-10000?commentID=673633#comment-673633?q=ArcGIS Token au"&gt;an older question&lt;/A&gt; asking the same thing for&amp;nbsp;the Java SDK version 100.0.0. In the previous version, I determined through a help ticket that this capability had not yet been implemented. It looks like the capability might be implemented now, but I haven't found anything in the documentation to explain how to get the token. In the .NET SDK they have&amp;nbsp;&lt;SPAN style="color: #595959; background-color: #f8f8f8;"&gt;AuthenticationManager.Current.GenerateCredentialAsync; I don't see anything similar in the Java SDK.&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;I'd really appreciate&amp;nbsp;any guidance in figuring this out.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 Mar 2018 04:28:03 GMT</pubDate>
      <guid>https://community.esri.com/t5/java-maps-sdk-questions/token-authentication-in-100-2-1/m-p/483748#M1486</guid>
      <dc:creator>DavidMomper</dc:creator>
      <dc:date>2018-03-27T04:28:03Z</dc:date>
    </item>
    <item>
      <title>Re: Token authentication in 100.2.1</title>
      <link>https://community.esri.com/t5/java-maps-sdk-questions/token-authentication-in-100-2-1/m-p/483749#M1487</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi David,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We tried to address this in this topic,&amp;nbsp;&lt;A class="link-titled" href="https://developers.arcgis.com/java/latest/guide/access-the-arcgis-platform.htm#ESRI_SECTION1_2513881AFEDD4B1688E614554463EB71" title="https://developers.arcgis.com/java/latest/guide/access-the-arcgis-platform.htm#ESRI_SECTION1_2513881AFEDD4B1688E614554463EB71"&gt;Access the ArcGIS platform—ArcGIS Runtime SDK for Java | ArcGIS for Developers&lt;/A&gt;&amp;nbsp;, and with this example -&amp;nbsp;&lt;A class="link-titled" href="https://developers.arcgis.com/java/latest/sample-code/oauthentication.htm" title="https://developers.arcgis.com/java/latest/sample-code/oauthentication.htm"&gt;OAuthentication—ArcGIS Runtime SDK for Java | ArcGIS for Developers&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://developers.arcgis.com/labs/java/access-private-layers/" title="https://developers.arcgis.com/labs/java/access-private-layers/"&gt;Access private layers | ArcGIS for Developers&lt;/A&gt;&amp;nbsp; - This DevLab may be good to check out, too.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Let us know if these are not helpful, and what we can do to make the process clearer. Thanks!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 11 May 2018 03:59:09 GMT</pubDate>
      <guid>https://community.esri.com/t5/java-maps-sdk-questions/token-authentication-in-100-2-1/m-p/483749#M1487</guid>
      <dc:creator>EricBader</dc:creator>
      <dc:date>2018-05-11T03:59:09Z</dc:date>
    </item>
    <item>
      <title>Re: Token authentication in 100.2.1</title>
      <link>https://community.esri.com/t5/java-maps-sdk-questions/token-authentication-in-100-2-1/m-p/483750#M1488</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eric,&lt;/P&gt;&lt;P&gt;Sorry I didn't notice when you replied to this almost a year ago. From the first link you provided, I was able to find the following reference to ArcGIS Tokens (bolded below, but no description of how to obtain one through the API:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P style="color: #4c4c4c; background-color: #ffffff; margin-bottom: 1.5rem;"&gt;The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=""&gt;ArcGIS Runtime SDK&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;provides full support for access to secured&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=""&gt;ArcGIS Server&lt;/SPAN&gt;,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN class=""&gt;ArcGIS Online&lt;/SPAN&gt;, or ArcGIS Enterprise resources using the following authorization methods:&lt;/P&gt;&lt;UL style="color: #4c4c4c; background-color: #ffffff; font-size: 0.9375rem; margin-left: 0.75rem; margin-bottom: 1.5rem;"&gt;&lt;LI style="margin: 0.375rem 0px 0.375rem 1.5rem;"&gt;&lt;STRONG&gt;ArcGIS Tokens: proprietary token-based authentication mechanism.&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI style="margin: 0.375rem 0px 0.375rem 1.5rem;"&gt;OAuth 2.0: secure delegated access to server resources.&lt;/LI&gt;&lt;LI style="margin: 0.375rem 0px 0.375rem 1.5rem;"&gt;Web-tier security: HTTP secured service / Integrated Windows Authentication (IWA).&lt;/LI&gt;&lt;LI style="margin: 0.375rem 0px 0.375rem 1.5rem;"&gt;Certificate: Public Key Infrastructure (PKI).&lt;/LI&gt;&lt;/UL&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;This is different from OAuth2 - I'm talking about the ArcGIS proprietary tokens obtained as described on &lt;A href="https://developers.arcgis.com/rest/services-reference/generate-token.htm"&gt;this page&lt;/A&gt;. I'm looking for how to do in Java something similar to what is demonstrated in &lt;A href="https://developers.arcgis.com/net/latest/wpf/sample-code/tokensecuredchallenge.htm"&gt;this .NET example&lt;/A&gt;. In the current 100.5.0 version of the Java SDK, I still don't see any straightforward way to do this. I've been writing my own HTTP code to send POST requests to the /generateToken service. Am I missing anything in the API or documentation that says how to do this?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Apr 2019 04:49:48 GMT</pubDate>
      <guid>https://community.esri.com/t5/java-maps-sdk-questions/token-authentication-in-100-2-1/m-p/483750#M1488</guid>
      <dc:creator>DavidMomper</dc:creator>
      <dc:date>2019-04-16T04:49:48Z</dc:date>
    </item>
    <item>
      <title>Re: Token authentication in 100.2.1</title>
      <link>https://community.esri.com/t5/java-maps-sdk-questions/token-authentication-in-100-2-1/m-p/483751#M1489</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;And in case it can help save anybody else from working to figure this out, here's the code I'm&amp;nbsp;using to create ArcGIS&amp;nbsp;tokens (not OAuth2). You&amp;nbsp;will need to modify it if you're using client IDs and not just referer. I've been using this to successfully access token-secured geoprocessing services.&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;private static UserCredential tokenFromJson(String tokenJson, String referer) {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;JsonParser parser = new JsonParser();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;JsonObject obj = parser.parse(tokenJson).getAsJsonObject();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;String tokenValue = obj.get("token").getAsString();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;long expiration = obj.get("expires").getAsLong();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;Instant expirationInstant = Instant.ofEpochMilli(expiration);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;if (expirationInstant.isBefore(Instant.now())) {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//token is expired.&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Token expired at " + expirationInstant);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return null;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;UserCredential cred = UserCredential.createFromToken(tokenValue, referer);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;return cred;&lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;public static UserCredential createToken(UserCredential cred,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;URL tokenGenUrl, String referer, int expirationMins) {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String tokenJSON = null;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HttpsURLConnection conn = (HttpsURLConnection)tokenGenUrl.openConnection();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;final String charset = "UTF-8";&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String urlParameters = "username=" + cred.getUsername()&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ "&amp;amp;password=" + cred.getPassword()&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ "&amp;amp;client=" + "referer"&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ "&amp;amp;referer=" + referer&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ "&amp;amp;expiration=" + &lt;SPAN style="background-color: #f6f6f6;"&gt;expirationMins&amp;nbsp;&lt;/SPAN&gt;+ "&amp;amp;f=json";&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(urlParameters);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.setRequestMethod("POST");&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.setRequestProperty("Accept-Charset", charset);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.setRequestProperty("Content-Length", "" +&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Integer.toString(urlParameters.getBytes().length));&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.setDoInput(true);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.setDoOutput(true);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.setUseCaches(false);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OutputStream wr = conn.getOutputStream();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wr.write(urlParameters.getBytes());&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BufferedReader in = new BufferedReader(&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new InputStreamReader(conn.getInputStream()));&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String inputLine;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringBuffer response = new StringBuffer();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while ((inputLine = in.readLine()) != null) {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;response.append(inputLine);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;in.close();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wr.close();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tokenJSON = response.toString();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println("Generating new query from service");&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UserCredential tokenCred = tokenFromJson(tokenJSON, referer);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return tokenCred;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (IOException e) {&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;return null;&lt;BR /&gt; }&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Apr 2019 03:06:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/java-maps-sdk-questions/token-authentication-in-100-2-1/m-p/483751#M1489</guid>
      <dc:creator>DavidMomper</dc:creator>
      <dc:date>2019-04-18T03:06:18Z</dc:date>
    </item>
  </channel>
</rss>

