By: Rj .. user 07 Feb 2018 at 1:16 a.m. CST

9 Responses
Rj .. gravatar
Hi We are using SCIM api with play framework and scala for Get, Create, Update user operations and I am using userId as UUID in my services. My service running on docker and I have install gluu-server on aws instance. My service getting two request and We have seperate code for each request: **_(1)get user UUID on behalf of user-EmailID_**. And another is _**(2) User registration.**_ **(1) Here is my scala code to get user UUID:-** import gluu.scim2.client.factory.ScimClientFactory import org.gluu.oxtrust.model.scim2.User import javax.ws.rs.core.MediaType import java.util.{Properties, UUID} import com.typesafe.config.ConfigFactory import gluu.scim2.client.ScimClient import play.api.Logger class TestScimClient { val config = ConfigFactory.load() val op_host=config.getString("op_host") val logger = Logger(this.getClass) val domainURL: String = op_host+"/identity/restv1" val OIDCMetadataUrl: String = op_host+"/.well-known/openid-configuration" logger.debug("***** domainURL *****"+domainURL) logger.debug("***** OIDCMetadataUrl *****"+OIDCMetadataUrl) var client: ScimClient = null def initialiseScimClient(): Unit = { try { client = ScimClientFactory.getTestClient(domainURL, OIDCMetadataUrl); logger.debug("****** client object created ****** "+client) } catch { case e: Exception => logger.debug("***** Got hit for initializing scimClient. *****") } } //-------getUUID------- @throws[Exception] def getUUID(emailID: String): String = { if(client == null) { initialiseScimClient() getUUID(emailID) } var customerUIID: String = searchUUID(emailID) if (customerUIID == "") { var username: String="" username=UUID.randomUUID().toString logger.debug("******** USER_NAME **********"+ username) val email1: String = emailID val email2: String = "ebc" + "@" + username var userDetails = "{ \"schemas\": [\"urn:ietf:params:scim:schemas:core:2.0:User\"], \"externalId\": \"07\", \"userName\": \"" + username + "\", \"name\": { \"givenName\": \"Singh61\", \"familyName\": \"json500\", \"middleName\": \"N/A\", \"honorificPrefix\": \"\", \"honorificSuffix\": \"\"}, \"displayName\": \"" + username + "\", \"nickName\": \" \", \"profileUrl\": \"http://www.gluu.org/\", \"emails\": [ {\"value\": \"" + email1 + "\", \"type\": \"work\", \"primary\": \"true\"}, {\"value\": \"" + email2 + "\", \"type\": \"home\", \"primary\": \"false\"} ], \"addresses\": [{\"type\": \"work\", \"streetAddress\": \"622 East 6th Street Suite 200\", \"locality\": \"Austin2\", \"region\": \"TX\", \"postalCode\": \"78701\", \"country\": \"US\", \"formatted\": \"621 East 6th Street Suite 200 Austin , TX 78701 US\", \"primary\": \"true\"}], \"phoneNumbers\": [{\"value\": \"246-345-2342\", \"type\": \"work\"}], \"ims\": [{\"value\": \"test_user2\", \"type\": \"Skype2\"}], \"userType\": \"MD2\", \"title\": \"MD2\", \"preferredLanguage\": \"en-us\", \"locale\": \"en_US\", \"active\": \"true\", \"password\": \"secret2\", \"roles\": [{\"value\": \"Owner2\"}], \"entitlements\": [{\"value\": \"full access\"}], \"x509Certificates\": [{\"value\": \"cert-15\"}] }" createUUID(userDetails) logger.debug("******* New Customer UUID Created *****") customerUIID = searchUUID(emailID) } logger.debug("UUID:=> " + customerUIID) return customerUIID } //---------Create Customer UUID--------- @throws[Exception] def createUUID(userDetails: Any): Unit = { try { val p = new Properties p.setProperty("json_string", userDetails.toString) client.createPersonString(p.getProperty("json_string"), MediaType.APPLICATION_JSON) } catch { case w: Exception => System.out.println(w.getLocalizedMessage) w.printStackTrace() } } //------searchUUID----> @throws[Exception] def searchUUID(emailID: String): String = { logger.debug("********Search EMAIL_ID **********"+ emailID) var output: String = "" val filter = "emails.value eq \"" + emailID + "\"" val response = client.searchUsers(filter, 1, 1, "", "", null) val results = response.getEntity.getResources if (results.size > 0) { val admin = results.get(0).asInstanceOf[User] output = admin.getId } return output } **Here is the log/output when I request for UUID which I need:** [2018-02-07 05:48:29,351] [debug] from controllers.HomeController in application-akka.actor.default-dispatcher-4 - ************* Got request to read User Email ID ***************** Time = 2018-02-07 05:48:29.351 [2018-02-07 05:48:29,352] [debug] from controllers.HomeController in application-akka.actor.default-dispatcher-4 - **************In Home Controller CustomerEmail*************** : abc@ebc.com [2018-02-07 05:48:29,352] [debug] from entity.TestScimClient in application-akka.actor.default-dispatcher-22 - ***** domainURL *****https://domainName/identity/restv1 [2018-02-07 05:48:29,352] [debug] from entity.TestScimClient in application-akka.actor.default-dispatcher-22 - ***** OIDCMetadataUrl *****https://domainName/.well-known/openid-configuration [2018-02-07 05:48:29,352] [debug] from actor.UuidActor in application-akka.actor.default-dispatcher-22 - ****** GOT HTTP HIT IN UUID_Actor ****** 2018-02-07 05:48:29,352 INFO [org.xdi.oxauth.model.util.JwtUtil] Bouncy Castle Provider was added already 2018-02-07 05:48:29,353 WARN [org.jboss.resteasy.spi.ResteasyProviderFactory] Provider class gluu.scim2.client.jackson.ScimContextResolver is already registered. 2nd registration is being ignored. 2018-02-07 05:48:29,353 WARN [org.jboss.resteasy.spi.ResteasyProviderFactory] Provider class gluu.scim2.client.jackson.ScimProvider is already registered. 2nd registration is being ignored. [2018-02-07 05:48:29,375] [debug] from sun.net.www.protocol.http.HttpURLConnection in application-akka.actor.default-dispatcher-22 - sun.net.www.MessageHeader@e080e015 pairs: {GET /.well-known/openid-configuration HTTP/1.1: null}{User-Agent: Java/1.8.0_111}{Host: domainName}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive} [2018-02-07 05:48:29,403] [debug] from sun.net.www.protocol.http.HttpURLConnection in application-akka.actor.default-dispatcher-22 - sun.net.www.MessageHeader@510b00ff10 pairs: {null: HTTP/1.1 200 OK}{Date: Wed, 07 Feb 2018 05:48:29 GMT}{Server: Jetty(9.3.15.v20161220)}{X-Xss-Protection: 1; mode=block}{X-Content-Type-Options: nosniff}{Strict-Transport-Security: max-age=31536000; includeSubDomains}{Content-Type: application/json}{Keep-Alive: timeout=5, max=100}{Connection: Keep-Alive}{Transfer-Encoding: chunked} tokens: 667ac0f2-8a69-4c70-9ceb-177b67d5b856 [2018-02-07 05:48:29,479] [debug] from entity.TestScimClient in application-akka.actor.default-dispatcher-22 - ****** client object created ****** gluu.scim2.client.TestModeScimClient@383711e3 [2018-02-07 05:48:29,480] [debug] from entity.TestScimClient in application-akka.actor.default-dispatcher-22 - ********Search EMAIL_ID ********** abc@ebc.com [2018-02-07 05:48:29,619] [debug] from entity.TestScimClient in application-akka.actor.default-dispatcher-22 - UUID:=> @!FE21.A802.2F28.155C!0001!FDAB.AC64!0000!C355.5A50.A2BF.A8E0 [2018-02-07 05:48:29,707] [debug] from controllers.HomeController in application-akka.actor.default-dispatcher-4 - ********** response Time**************** 2018-02-07 05:48:29.707 **(2)User registration:** import java.util.{Properties, UUID} import javax.ws.rs.core.MediaType import com.typesafe.config.ConfigFactory import gluu.scim2.client.ScimClient import gluu.scim2.client.factory.ScimClientFactory import org.gluu.oxtrust.model.scim2.User class RegisterUser { val config = ConfigFactory.load() val opHost = config.getString("gluu.op_host") var flag = 0; // this flag is used because we use recusion for initializeScimclient fns val domainURL2: String = opHost + "/identity/restv1" val OIDCMetadataUrl2: String = opHost + "/.well-known/openid-configuration" var client: ScimClient = null def initialiseScimClient(): Unit = { try { client = ScimClientFactory.getTestClient(domainURL2, OIDCMetadataUrl2); println("clientOBJECT==>" + client) } catch { case e: Exception => println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" + " " + e.getLocalizedMessage) } } var status = "" @throws[Exception] def newUser(userName: String, firstName: String, lastName: String, emailId: String, password: String): String = { if (client == null) { initialiseScimClient() newUser(userName, firstName, lastName, emailId, password) } var verification1: String = verifyUserName(userName) var verification2: String = verifyEmail(emailId) if (verification1 == "" && verification2 == "") { println("<<<<<<<<<<<<<<<Enter in new creation>>>>>>>>>>>>>>>>>>>>>>") val userDetails = "{ \"schemas\": [\"urn:ietf:params:scim:schemas:core:2.0:User\"], \"userName\": \"" + userName + "\", \"name\": { \"givenName\": \"" + firstName + "\", \"familyName\": \"" + lastName + "\", \"middleName\": \"N/A\", \"honorificPrefix\": \"\", \"honorificSuffix\": \"\"}, \"displayName\": \"" + userName + "\", \"emails\": [ {\"value\": \"" + emailId + "\", \"type\": \"Personal\", \"primary\": \"true\"} ], \"role \": \"user\", \"active\": \"true\", \"password\": \"" + password + "\", \"roles\": [{\"value\": \"user\"}] , \"x509Certificates\": [{\"value\": \"cert-15\"}] }" createNewUser(userDetails) status = searchUUID(userName) flag = 1 } else if (flag == 0) { status = verification1 + verification2 } status } // CreateCustomer----> @throws[Exception] def createNewUser(dt: Any): Unit = { try { val p = new Properties p.setProperty("json_string", dt.toString) client.createPersonString(p.getProperty("json_string"), MediaType.APPLICATION_JSON) } catch { case w: Exception => System.out.println(w.getLocalizedMessage) w.printStackTrace() } } @throws[Exception] def searchUUID(userName: String): String = { var output: String = "" val filter = "userName eq \"" + userName + "\"" val response = client.searchUsers(filter, 1, 1, "", "", null) val results = response.getEntity.getResources if (results.size > 0) { val resp = results.get(0).asInstanceOf[User] output = resp.getId } return output } def verifyUserName(userName: String): String = { var output: String = "" val filter = "userName eq \"" + userName + "\"" val response = client.searchUsers(filter, 1, 1, "", "", null) val results = response.getEntity.getResources if (results.size > 0) { val resp = results.get(0).asInstanceOf[User] output = resp.getId if (output != "") { output = "*** userName already exist ***" } } return output } def verifyEmail(emailId: String): String = { var output: String = "" val filter = "emails.value eq \"" + emailId + "\"" val response = client.searchUsers(filter, 1, 1, "", "", null) val results = response.getEntity.getResources if (results.size > 0) { val resp = results.get(0).asInstanceOf[User] output = resp.getId.toString if (output != "") { output = "email already exist ***" } } return output } } **Here is the log of user registration request :** reqest>>>>{"userName":"heldfss2","firstName":"sa","lastName":"da","emailId":"spineor@gmail.com","password":"12"}[2018-02-07 05:14:53,402] [debug] from controllers.HomeController in application-akka.actor.default-dispatcher-4 - **************** registerNewUser ******************************** [2018-02-07 05:14:53,403] [debug] from controllers.HomeController in application-akka.actor.default-dispatcher-4 - register user request newUserRequest(heldfss2,sa,da,spineor@gmail.com,12) 2018-02-07 05:14:53,403 INFO [org.xdi.oxauth.model.util.JwtUtil] Bouncy Castle Provider was added already 2018-02-07 05:14:53,403 WARN [org.jboss.resteasy.spi.ResteasyProviderFactory] Provider class gluu.scim2.client.jackson.ScimContextResolver is already registered. 2nd registration is being ignored. 2018-02-07 05:14:53,403 WARN [org.jboss.resteasy.spi.ResteasyProviderFactory] Provider class gluu.scim2.client.jackson.ScimProvider is already registered. 2nd registration is being ignored. [2018-02-07 05:14:53,419] [debug] from sun.net.www.protocol.http.HttpURLConnection in application-akka.actor.default-dispatcher-4 - sun.net.www.MessageHeader@371623405 pairs: {GET /.well-known/openid-configuration HTTP/1.1: null}{User-Agent: Java/1.8.0_111}{Host: DomainName}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive} [2018-02-07 05:14:53,430] [debug] from sun.net.www.protocol.http.HttpURLConnection in application-akka.actor.default-dispatcher-4 - sun.net.www.MessageHeader@1451a5410 pairs: {null: HTTP/1.1 200 OK}{Date: Wed, 07 Feb 2018 05:14:53 GMT}{Server: Jetty(9.3.15.v20161220)}{X-Xss-Protection: 1; mode=block}{X-Content-Type-Options: nosniff}{Strict-Transport-Security: max-age=31536000; includeSubDomains}{Content-Type: application/json}{Keep-Alive: timeout=5, max=100}{Connection: Keep-Alive}{Transfer-Encoding: chunked} tokens: 8e25d56e-4610-4154-851d-ba01d6923d87 clientOBJECT==>gluu.scim2.client.TestModeScimClient@2113d6aa _**But some time we are getting an issue when request for user-registration or request usser_UUID: **_ reqest>>>>{"userName":"hel","firstName":"sa","lastName":"da","emailId":"far@gmail.com","password":"12"}new user paramshel--12 [2018-02-06 04:30:11,593] [#[36mdebug#[0m] from controllers.HomeController in application-akka.actor.default-dispatcher-3 - register user request newUserRequest(hel,sa,da,far@gmail.com,12) 2018-02-06 04:30:11,594 INFO [org.xdi.oxauth.model.util.JwtUtil] Bouncy Castle Provider was added already 2018-02-06 04:30:11,595 WARN [org.jboss.resteasy.spi.ResteasyProviderFactory] Provider class gluu.scim2.client.jackson.ScimContextResolver is already registered. 2nd registration is being ignored. 2018-02-06 04:30:11,595 WARN [org.jboss.resteasy.spi.ResteasyProviderFactory] Provider class gluu.scim2.client.jackson.ScimProvider is already registered. 2nd registration is being ignored. [2018-02-06 04:30:11,663] [#[36mdebug#[0m] from sun.net.www.protocol.http.HttpURLConnection in application-akka.actor.default-dispatcher-3 - sun.net.www.MessageHeader@3019fff25 pairs: {GET /.well-known/openid-configuration HTTP/1.1: null}{User-Agent: Java/1.8.0_111}{Host: DomainName}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive} [2018-02-06 04:30:11,681] [#[36mdebug#[0m] from sun.net.www.protocol.http.HttpURLConnection in application-akka.actor.default-dispatcher-3 - sun.net.www.MessageHeader@6ba3b13310 pairs: {null: HTTP/1.1 200 OK}{Date: Tue, 06 Feb 2018 04:30:11 GMT}{Server: Jetty(9.3.15.v20161220)}{X-Xss-Protection: 1; mode=block}{X-Content-Type-Options: nosniff}{Strict-Transport-Security: max-age=31536000; includeSubDomains}{Content-Type: application/json}{Keep-Alive: timeout=5, max=100}{Connection: Keep-Alive}{Transfer-Encoding: chunked} tokens: null clientOBJECT==>gluu.scim2.client.TestModeScimClient@6a2fa01c [2018-02-06 04:30:12,025] [#[31merror#[0m] from application in application-akka.actor.default-dispatcher-3 - ! @76pflm11p - Internal server error, for (POST) [/registerNewUser] -> play.api.UnexpectedException: Unexpected exception[ReaderException: java.io.IOException: Stream closed] at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:289) at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:220) at play.api.GlobalSettings$class.onError(GlobalSettings.scala:160) at play.api.DefaultGlobal$.onError(GlobalSettings.scala:188) at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:100) at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:100) at play.core.server.netty.PlayRequestHandler$$anonfun$2$$anonfun$apply$1.applyOrElse(PlayRequestHandler.scala:99) at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:346) at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:345) at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:36) at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70) at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:44) at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:252) at scala.concurrent.Promise$class.complete(Promise.scala:55) at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:157) at scala.concurrent.Promise$class.failure(Promise.scala:104) at scala.concurrent.impl.Promise$DefaultPromise.failure(Promise.scala:157) at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:257) at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:251) at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:36) at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55) at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:91) at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91) at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91) at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72) at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:90) at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:39) at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:415) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) Caused by: org.jboss.resteasy.spi.ReaderException: java.io.IOException: Stream closed at org.jboss.resteasy.client.core.BaseClientResponse.readFrom(BaseClientResponse.java:477) at org.jboss.resteasy.client.core.BaseClientResponse.getEntity(BaseClientResponse.java:390) at org.jboss.resteasy.client.core.BaseClientResponse.getEntity(BaseClientResponse.java:347) at Model.RegisterUser.verifyUserName(RegisterUser.scala:101) at Model.RegisterUser.newUser(RegisterUser.scala:47) at Model.RegisterUser.newUser(RegisterUser.scala:44) at controllers.HomeController$$anonfun$registerNewUser$1.apply(HomeController.scala:122) at controllers.HomeController$$anonfun$registerNewUser$1.apply(HomeController.scala:110) at play.api.mvc.ActionBuilder$$anonfun$apply$13.apply(Action.scala:371) at play.api.mvc.ActionBuilder$$anonfun$apply$13.apply(Action.scala:370) at play.api.mvc.Action$.invokeBlock(Action.scala:498) at play.api.mvc.Action$.invokeBlock(Action.scala:495) at play.api.mvc.ActionBuilder$$anon$2.apply(Action.scala:458) at play.api.mvc.Action$$anonfun$apply$2$$anonfun$apply$5$$anonfun$apply$6.apply(Action.scala:112) at play.api.mvc.Action$$anonfun$apply$2$$anonfun$apply$5$$anonfun$apply$6.apply(Action.scala:112) at play.utils.Threads$.withContextClassLoader(Threads.scala:21) at play.api.mvc.Action$$anonfun$apply$2$$anonfun$apply$5.apply(Action.scala:111) at play.api.mvc.Action$$anonfun$apply$2$$anonfun$apply$5.apply(Action.scala:110) at scala.Option.map(Option.scala:146) at play.api.mvc.Action$$anonfun$apply$2.apply(Action.scala:110) at play.api.mvc.Action$$anonfun$apply$2.apply(Action.scala:103) at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:253) ... 14 common frames omitted Caused by: java.io.IOException: Stream closed at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:170) at java.io.BufferedInputStream.read(BufferedInputStream.java:336) at org.jboss.resteasy.client.core.SelfExpandingBufferredInputStream.read(SelfExpandingBufferredInputStream.java:57) at org.codehaus.jackson.impl.ByteSourceBootstrapper.ensureLoaded(ByteSourceBootstrapper.java:507) at org.codehaus.jackson.impl.ByteSourceBootstrapper.detectEncoding(ByteSourceBootstrapper.java:129) at org.codehaus.jackson.impl.ByteSourceBootstrapper.constructParser(ByteSourceBootstrapper.java:224) at org.codehaus.jackson.JsonFactory._createJsonParser(JsonFactory.java:785) at org.codehaus.jackson.JsonFactory.createJsonParser(JsonFactory.java:561) at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:414) at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.readFrom(AbstractReaderInterceptorContext.java:59) at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:51) at org.jboss.resteasy.plugins.interceptors.encoding.GZIPDecodingInterceptor.aroundReadFrom(GZIPDecodingInterceptor.java:59) at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53) at org.jboss.resteasy.client.core.BaseClientResponse.readFrom(BaseClientResponse.java:440) ... 35 common frames omitted **After this issue on any request (uuid request or user registration) getting same issue till service not restart.** Please suggest what I do to fix this issue. Thanks!!

By Thomas Gasmyr Mougang staff 07 Feb 2018 at 1:25 a.m. CST

Thomas Gasmyr Mougang gravatar
Hi Rj, Please provide your code as attachment. Posting code in ticket description is not good at all. Thanks!

By Rj .. user 07 Feb 2018 at 1:54 a.m. CST

Rj .. gravatar
Hi Thomas Gasmyr Mougang, Thanks for quick reply. I am unable to find any attachment option here. Thanks!

By Thomas Gasmyr Mougang staff 07 Feb 2018 at 2:04 a.m. CST

Thomas Gasmyr Mougang gravatar
Really? Please check [this](https://pasteboard.co/H6vt8SD.png) screenshot.

By Rj .. user 07 Feb 2018 at 4:52 a.m. CST

Rj .. gravatar
But here is not showing any attachment option: [https://pasteboard.co/H6wxner.png](https://support.gluu.org/authentication/5096/scim-api-issue/#at29953)

By Thomas Gasmyr Mougang staff 07 Feb 2018 at 5:05 a.m. CST

Thomas Gasmyr Mougang gravatar
Rj, It seems to me that you confused [link](https://support.gluu.org/authentication/5096/scim-api-issue/#at29953)(the one you provide in your last post). There are many ways to share files. You can upload them in google doc, share them and paste the link here.

By Rj .. user 07 Feb 2018 at 6:24 a.m. CST

Rj .. gravatar
Please have a look [this link](https://docs.google.com/document/d/1TsP2hGGSZQcwksj85pjCvP0e3E9Ep2njk2uEnoXr30E/edit?usp=sharing)

By William Lowe user 07 Feb 2018 at 8:52 a.m. CST

William Lowe gravatar
This looks like a private file.. please share it publicly.

By Rj .. user 07 Feb 2018 at 10:13 a.m. CST

Rj .. gravatar
Hi William, Please check now [doc link](https://docs.google.com/document/d/1TsP2hGGSZQcwksj85pjCvP0e3E9Ep2njk2uEnoXr30E/edit)

By Thomas Gasmyr Mougang staff 16 Feb 2018 at 2:37 a.m. CST

Thomas Gasmyr Mougang gravatar
Hi RJ, How it is going? Have you found a fix for your issue or do you still need assistance? Here are observations: 1. The error is clear. 2. The error occurs when the token is null. Suggestion: Make sure the token is not null. Please note, We are unable to troubleshoot & debug code for community support. If you are interested in further assistance, [check our VIP support packages](https://www.gluu.org/entitlements/) for more information. Hope the suggestion will help you. Thanks!