I had a quick look. Before you create a Jira issue, here are some questions:
First, why did you pick the 120 bit secret key KeS5mHZGWAD6-5V9qwCE ?
Then, as I did no find any "Date expiresAt)" in any code ever in OFBiz:
https://ofbiz.markmail.org/search/?q=Date+expiresAt%29
my question is do you rather use
publicstaticStringcreateJwt(Delegatordelegator, Map<String, String> claims,
StringkeySalt, intexpireTime)
https://github.com/apache/ofbiz-framework/blob/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/JWTManager.java#L299
?
That would be strange because you would be then forced to use the OOTB "security.token.key" (property in security.properties) through one of the
JWTManager::getJWTKey
So you could pick what you want as security.token.key and set a 512 bit secret
key
I hope this will help to clarify
Jacques
PS: BTW totally unrelated, but I found this 2017 article interesting:
https://auth0.com/blog/brute-forcing-hs256-is-possible-the-importance-of-using-strong-keys-to-sign-jwts/
Le 06/12/2022 à 11:18, Jacques Le Roux a écrit :
Hi Ayan,
Thanks for your detailed answer, I now understand the issue and will have a 1st
look at it.
I have created a Jira account for you (ayanfarooqui). Could you please create a
Jira bug issue, you may follow
https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Contributors+Best+Practices
Copying the information below as description would be perfect.
TIA
Jacques
Le 29/11/2022 à 13:39, Ayan Farooqui a écrit :
Hello Jacques,
Thank You for moderating the message.
I have secured my Solr setup using solr.JWTAuthPlugin <https://solr.apache.org/guide/8_11/jwt-authentication-plugin.html>. I need to provide the
algorithm name (HS512) and the secret key to verify the payload in solr. The rest api for my Solr setup will be triggered from OFBiz for which I am
generating a JWT token and validating it. Using the given key & following methods - secret key - KeS5mHZGWAD6-5V9qwCE (This is 120 bit key)
public static String createJwt(Delegator delegator, Map<String, String> claims, String keySalt, Date expiresAt)(ofbiz github code
<https://github.com/apache/ofbiz-framework/blob/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/JWTManager.java>)
public static Map<String, Object> validateToken(String jwtToken, String key) (ofbiz github code
<https://github.com/apache/ofbiz-framework/blob/trunk/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/JWTManager.java> )
When I use the above generated token and key in Solr I get the InvalidKeyException which says The secret is only 120 bits, 512 bits is required by
HS512.
I suppose we should get such exception in OFbiz also, when generating a token
using shorter than recommended key size.
As mentioned in jawa-jwt docs
"Ensure the length of the secret is at least 512 bit long" under HMAC512 header (Reference
<https://javadoc.io/doc/com.auth0/java-jwt/latest/com/auth0/jwt/algorithms/Algorithm.html>)
But I am using only 120 bit key (KeS5mHZGWAD6-5V9qwCE) in the validateToken(String jwtToken, String key) method and it is not throwing any
exception for key size.
On Tue, Nov 29, 2022 at 3:20 PM Jacques Le Roux <jacques.le.r...@les7arts.com>
wrote:
Hi Ayan, Your message has been (somehow) moderated, else it would not have
reached this Mailing List. Please subscribe to the user ML for such
questions and then use your email client. See why here
http://ofbiz.apache.org/mailing-lists.html. You will get a better support,
people can
answer you on the ML. The wider the audience the better the answers you
might get. Also it's more work for moderators who have to accept your
messages as long as you have not subscribed. I'll personally no longer
accept them (other moderators still could). Thanks
This said, I moderated your message too late so it was no possible to do it
the conventional way. Anyway here we are. I see that you are working
with Hotwax, and nobody from there moderated your email. So maybe the issue is
already "fixed" internally?
Else we need more information, like:
Why did you need a JWT token to use Solr? What makes you think that "OFBiz is
generating the token with a 120 bit key"? Etc.
HTH
Jacques
Le 21/11/2022 à 10:13, Ayan Farooqui a écrit :
Hello devs,
I was doing a POC on JWT authentication in Solr, to implement it I
generated a JWT token using OFBiz. When I used the same token and secret key
to authenticate a request on my local Solr instance, Solr gave an error “A
key of the same size as the hash output or larger MUST be used with
this algorithm”. Upon debugging the issue I found reference to this rule.
“A key of the same size as the hash output (for instance, 256 bits for
"HS256") or larger MUST be used with this algorithm. (This
requirement is based onSection 5.3.4
<https://www.rfc-editor.org/rfc/rfc7518#section-5.3.4>(Security Effect of the
HMAC
Key) of NIST SP 800-117 [NIST.800-107
<https://www.rfc-editor.org/rfc/rfc7518#ref-NIST.800-107>]”
OFBiz is generating the token with a 120 bit key when it should throw an
exception for key size while using the HS512 or HS256 algorithm.
Reference - https://www.rfc-editor.org/rfc/rfc7518#page-7
<https://www.rfc-editor.org/rfc/rfc7518#page-7>