> Now the API servers at Omniture tell me:
>
> {\"error\":\"The nonce (ZTQxNWI4ZTU0YTQyMGEwZjRmZTY0ZTU0Nzc4MzgzZTQ=)
> has already been used\"}"}


I may have misunderstood this. clj-http defaults to retrying the same
request 4 times, if it gets a 4xx error, so the nonce gets re-used 4
times, which would explain this error on the 2nd, 3rd and 4th
attempt.

Sadly, I can not figure out what the error is on the 1st attempt.




On Mar 4, 1:38 pm, larry google groups <lawrencecloj...@gmail.com>
wrote:
> Hmm, I finally got a different error message (after days of trying). I
> re-read the documentation here:
>
> http://commons.apache.org/codec/apidocs/org/apache/commons/codec/bina...
>
> and realized I might need to use this method:
>
> encodeBase64String
>
> which returns a string. The method I had been using was giving me
> bytes instead of a string.
>
> Now the API servers at Omniture tell me:
>
> {\"error\":\"The nonce (ZTQxNWI4ZTU0YTQyMGEwZjRmZTY0ZTU0Nzc4MzgzZTQ=)
> has already been used\"}"}
>
> If anyone can suggest a better way to generate a random string, I
> would be grateful.
>
> On Mar 4, 1:31 pm, larry google groups <lawrencecloj...@gmail.com>
> wrote:
>
>
>
>
>
>
>
> > So, right now I am using this code:
>
> >  (let [username (get-in @um/interactions [:omniture-api-
> > credentials :username])
> >   secret (get-in @um/interactions [:omniture-api-credentials :shared-
> > secret])
> >   nonce (DigestUtils/md5Hex (str (math/round (* (rand 1 ) 1000000))))
> >   nonce-encoded-base64 (Base64/encodeBase64 (.getBytes nonce))
> >   date-formatter (new SimpleDateFormat "yyyy-MM-dd'T'HH:mm:ss")
> >   formatter gmt-timezone)
> >   created (.format date-formatter (new Date))
> >   digest-as-string (apply str nonce created secret)
> >   digest (.digest (java.security.MessageDigest/getInstance "sha1")
> > (.getBytes digest-as-string))
> >   digest-base64 (Base64/encodeBase64 digest)
> >   header (apply str " UsernameToken Username=\""  username  "\"
> > PasswordDigest=\"" digest "\" Nonce=\"" nonce-encoded-base64 "\"
> > Created=\"" created "\"")]
> >              header)
>
> > but when I print the header to the terminal, I still see values that
> > should be base64 but are not:
>
> > PasswordDigest="[B@3652831e" Nonce="[B@631e426e" Created="2\
> > 013-03-04T13:26:21"
>
> > The classes I'm using are, I think, fairly standard:
>
> >    (java.security MessageDigest)
> >    (org.apache.commons.codec.binary Base64)
> >    (org.apache.commons.codec.digest DigestUtils)
>
> > What am I doing wrong?
>
> > On Mar 4, 1:20 pm, Frank Siebenlist <frank.siebenl...@gmail.com>
> > wrote:
>
> > > Not sure if it's helpful in this context, but I've been playing with a 
> > > more functional
> > > message-digest/secure-hashing interface recently.
>
> > > Please take a look at:
>
> > >https://github.com/franks42/clj.security.message-digest
>
> > > It's still a little raw, and probably more "educational" than practical 
> > > right now,
> > > but my hope was that if could clarify some of the message-digesting 
> > > workings.
>
> > > Would love to get some feedback...
>
> > > Enjoy, Frank.
>
> > > On Mar 4, 2013, at 10:09 AM, larry google groups 
> > > <lawrencecloj...@gmail.com> wrote:
>
> > > >>>  nonce (DigestUtils/md5Hex (random-string 32))
> > > >>>  nonce-encoded-base64 (Base64/encodeBase64 (.getBytes nonce))
>
> > > >> Is this used somewhere?
>
> > > > Yes, at the end, everything gets pulled together in a big string,
> > > > which is added as a header to the POST request:
>
> > > > header (apply str " UsernameToken Username=\""  username  "\"
> > > > PasswordDigest=\"" digest "\" Nonce=\"" nonce-encoded-base64 "\"
> > > > Created=\"" created "\"")
>
> > > > As the developer from Omniture told me:
>
> > > > "The nonce is transmitted in the header as base64 encoded. However,
> > > > the digest is formed with the raw binary version (aka decoded) version
> > > > of the string. The concept you have to understand is that the
> > > > authorization server is re-performing these critical steps on the back
> > > > end. If a step isn't done exactly in the client, the digest will
> > > > mismatch and cause an auth failure."
>
> > > > On Mar 4, 12:49 pm, Aaron Cohen <aa...@assonance.org> wrote:
> > > >> On Mon, Mar 4, 2013 at 11:12 AM, larry google groups <
>
> > > >> lawrencecloj...@gmail.com> wrote:
> > > >>>> expects its argument to be a byte array:
> > > >>>http://docs.oracle.com/javase/6/docs/api/java/security/MessageDigest....
>
> > > >>>> which can be obtained from a string using String#getBytes.
>
> > > >>> I appreciate your suggestion. For most of the attempts that I have
> > > >>> made, I have used this code:
>
> > > >>>  nonce (DigestUtils/md5Hex (random-string 32))
> > > >>>  nonce-encoded-base64 (Base64/encodeBase64 (.getBytes nonce))
>
> > > >> Is this used somewhere?
>
> > > >>>  date-formatter (new SimpleDateFormat "yyyy-MM-dd'T'HH:mm:ss'Z'")
> > > >>>  created (.format date-formatter (new Date))
> > > >>>  digest-as-string (apply str nonce created secret)
>
> > > >> (str binary-array) returns the toString of the array, which is 
> > > >> something
> > > >> like "[B@5d5d0293". That has nothing to do with the contents of the 
> > > >> array.
> > > >> I think you want the base64 encoded string here.
>
> > > >> --Aaron
>
> > > > --
> > > > --
> > > > You received this message because you are subscribed to the Google
> > > > Groups "Clojure" group.
> > > > To post to this group, send email to clojure@googlegroups.com
> > > > Note that posts from new members are moderated - please be patient with 
> > > > your first post.
> > > > To unsubscribe from this group, send email to
> > > > clojure+unsubscr...@googlegroups.com
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/clojure?hl=en
> > > > ---
> > > > You received this message because you are subscribed to the Google 
> > > > Groups "Clojure" group.
> > > > To unsubscribe from this group and stop receiving emails from it, send 
> > > > an email to clojure+unsubscr...@googlegroups.com.
> > > > For more options, visithttps://groups.google.com/groups/opt_out.

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to