I know this has nothing to do with the issue at hand but if you have a public 
facing solr instance you have much bigger issues.  

> On Sep 19, 2019, at 10:16 PM, Tyrone Tse <tyrone...@hotmail.com> wrote:
> 
> I finally got JWT Authentication working on Solr 8.1.1.
> This is my security.json file contents
> {
>   "authentication":{
>      "class":"solr.JWTAuthPlugin",
>      "jwk":{
>         "kty":"oct",
>         "use":"sig",
>         "kid":"k1",
> 
> "k":"xbQNocUhLJKSmGi0Qp_4hAVfls9CWH5WoTrw543WTXi5H6G-AXFlHRaTKWoGZtLKAD9jn6-MFC49jvR3bJI2L_H9a3yeRgd3tMkhxcR7ABsnhFz2WutN7NSZHiAxCJzTxR8YsgzMM9SXjvp6H1xpNWALdi67YIogKFTLiUIRDtdp3xBJxMP9IQlSYxK4ov81lt4hpAhSdkfpeczgRGd2xxrMbN38uDqtoIXSPRX-7d3pf1YvlyzWKHudTz30sjM6R2h-RRDBOp-SK_tDq4vjG72DyqFYt7BRyzSzrxGl-Ku5yURr21u6vep6suWeJ2_fmA8hgd304e60DBKZoFebxQ",
>         "alg":"HS256"
>      },
>      "aud":"Solr"
>   },
>   "authorization":{
>      "class":"solr.RuleBasedAuthorizationPlugin",
>      "permissions":[
>         {
>            "name":"open_select",
>            "path":"/select/*",
>            "role":null
>         },
>         {
>            "name":"all-admin",
>            "collection":null,
>            "path":"/*",
>            "role":"admin"
>         },
>         {
>            "name":"update",
>            "role":"solr-update"
>         }
>      ],
>      "user-role":{
>         "admin":"solr-update"
>      }
>   }
> }
> 
> I used the web site to generate the JWK key.
> 
> So I am using the "k" value from the JWK to sign the JWT token.
> 
> Initially, I used website
> https://jwt.io/#debugger-io?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6InNvbHIiLCJleHAiOjk5MTYyMzkwMjJ9.rqMpVpTSbNUHDA7VLSYUpv4ebeMjvwQMD6hwMDpvcBQ
> 
> to generate the JWT and sign it with the value
> xbQNocUhLJKSmGi0Qp_4hAVfls9CWH5WoTrw543WTXi5H6G-AXFlHRaTKWoGZtLKAD9jn6-MFC49jvR3bJI2L_H9a3yeRgd3tMkhxcR7ABsnhFz2WutN7NSZHiAxCJzTxR8YsgzMM9SXjvp6H1xpNWALdi67YIogKFTLiUIRDtdp3xBJxMP9IQlSYxK4ov81lt4hpAhSdkfpeczgRGd2xxrMbN38uDqtoIXSPRX-7d3pf1YvlyzWKHudTz30sjM6R2h-RRDBOp-SK_tDq4vjG72DyqFYt7BRyzSzrxGl-Ku5yURr21u6vep6suWeJ2_fmA8hgd304e60DBKZoFebxQ
> 
> The header is
> {
>  "alg": "HS256",
>  "typ": "JWT"
> }
> 
> and the payload is
> 
> {
>  "sub": "admin",
>  "aud": "Solr",
>  "exp": 9916239022
> }
> 
> This generates the JWT key of
> eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6IlNvbHIiLCJleHAiOjk5MTYyMzkwMjJ9._H1qeNvlpIOn3X9IpDG0QiRWnEDXITMhZm1NMfuocSc
> 
> So when I use this JWT token generated https://jwt.io/  JWT authentication
> is working, and I can authenticate as the user admin and Post data to the
> Solr collections/cores.
> 
> Now we have decided to get the JWT token generated using Java before we
> authenticate as the user admin to Post data to Solr, and to have a
> calculated expiration date
> 
> Here is the Java Snippet for generating the JWT token
> 
> import io.jsonwebtoken.Jwts;
> import io.jsonwebtoken.SignatureAlgorithm;
> ...
> ...
>            String
> key="xbQNocUhLJKSmGi0Qp_4hAVfls9CWH5WoTrw543WTXi5H6G-AXFlHRaTKWoGZtLKAD9jn6-MFC49jvR3bJI2L_H9a3yeRgd3tMkhxcR7ABsnhFz2WutN7NSZHiAxCJzTxR8YsgzMM9SXjvp6H1xpNWALdi67YIogKFTLiUIRDtdp3xBJxMP9IQlSYxK4ov81lt4hpAhSdkfpeczgRGd2xxrMbN38uDqtoIXSPRX-7d3pf1YvlyzWKHudTz30sjM6R2h-RRDBOp-SK_tDq4vjG72DyqFYt7BRyzSzrxGl-Ku5yURr21u6vep6suWeJ2_fmA8hgd304e60DBKZoFebxQ";
>            Calendar cal =Calendar.getInstance();
>            Date issueAt = cal.getTime();
>            cal.add(Calendar.MINUTE,60);
>            Date expDate = cal.getTime();
>            String jws = Jwts.builder().
>                setSubject("admin")
>                .setAudience("Solr")
>                .setExpiration(expDate)
>                .signWith(SignatureAlgorithm.HS256,key).compact();
>            System.out.println(jws);
> 
> This does not generate a valid JWT token, when I use it I am getting the
> error message
> <html>
> 
> <head>
>    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
>    <title>Error 401 Signature invalid</title>
> </head>
> 
> <body>
>    <h2>HTTP ERROR 401</h2>
>    <p>Problem accessing /solr/stores/update. Reason:
>        <pre> Signature invalid</pre>
>    </p>
> </body>
> 
> </html>
> 
> I tried generating the JWT token using JavaScript from this codepen
> https://codepen.io/tyrone-tse/pen/MWgzExB
> 
> and it too generates an invalid JWT key.
> 
> How come it works when the JWT is generated from
> https://jwt.io/#debugger-io?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6InNvbHIiLCJleHAiOjk5MTYyMzkwMjJ9.rqMpVpTSbNUHDA7VLSYUpv4ebeMjvwQMD6hwMDpvcBQ
> 
> 
> 
> 
> 
> 
> 
>> On Sat, Sep 14, 2019 at 9:06 AM Jan Høydahl <jan....@cominvent.com> wrote:
>> 
>> See answer in other thread. JWT works for 8.1 or later, don’t attempt it
>> in 7.x.
>> 
>> You could try to turn on debug logging for or.apache.solr.security to get
>> more logging.
>> 
>> Jan Høydahl
>> 
>>> 13. sep. 2019 kl. 00:24 skrev Tyrone Tse <tyrone...@hotmail.com>:
>>> 
>>> Jan
>>> 
>>> I tried using the JWT Plugin https://github.com/cominvent/solr-auth-jwt
>>> 
>>> If my security.json file is
>>> 
>>> {
>>> "authentication": {
>>>   "class":"com.cominvent.solr.JWTAuthPlugin",
>>>       "jwk" : {
>>>               "kty": "oct",
>>>               "use": "sig",
>>>               "kid": "solr",
>>>               "k":
>>> 
>> "pIpVnjhuAj9DBg8e2lwya7o_uZMM3Wqo2eK0uchOza0vBS-orZNYTkLcHTLXF9JaCBR08tWfFEWVPENF6sXKuaj8Mn65Kc3QUmS-csblVvjj69dXk2Mi-Zs2iDDM3QyyvdiyRpfxE-xKwwjhU47xs7M0Dq69I1UE5nrFkczLf9qe3b47ha3eBQDm1_zg8EVwxadJ7gfQ97jn2MtT6hHrts9YD6_Z_heAdYC2QYjBBIdEXzZgHSKqmPNNhDvAChF9AfmNiUlfAG_g0jMMLKYEUv6ck3KJA6A1JBq1iEstjvF7hchFgdgyVRCR5P8UM6n6Hb0YrHjjANyEYIZD9mFfBQ",
>>>               "alg": "HS256"
>>>               }
>>> }
>>> }
>>> 
>>> And my JWT token has the properties Header {
>>> "alg": "HS256",
>>> "typ": "JWT"
>>> } Payload {
>>> "sub": "admin",
>>> "name": "admin",
>>> "iat": 1516239022
>>> } What other parameters do I need to add to the security.json file to
>>> secure Solr 7.2 ? I don't want anyone being able to access it without
>> using
>>> 
>>> curl -H "Authorization : Bearer <jwt-token>"
>>> http://localhost:8983/solr/admin/info
>>> 
>>> 
>>> 
>>> Thanks Tyrone
>>> 
>>> 
>>> 
>>>> On Tue, Sep 10, 2019 at 2:18 PM Tyrone Tse <tyrone...@hotmail.com>
>> wrote:
>>>> 
>>>> All I could see in the solr.log was ( could it be the java version ?)
>>>> 
>>>> 
>> main{ExitableDirectoryReader(UninvertingDirectoryReader(Uninverting(_0(8.2.0):C1:[diagnostics={java.vendor=Oracle
>>>> Corporation, os=Mac OS X, java.version=1.8.0_60,
>> java.vm.version=25.60-b23,
>>>> lucene.version=8.2.0, os.arch=x86_64, java.runtime.version=1.8.0_60-b27,
>>>> source=flush, os.version=10.12.6,
>>>> 
>> timestamp=1568127993644}]:[attributes={Lucene50StoredFieldsFormat.mode=BEST_SPEED}])))}
>>>> 2019-09-10 19:16:02.312 WARN  (qtp875016237-24) [   ]
>>>> o.a.s.s.JWTAuthPlugin Authentication failed.
>>>> 
>>>> On Tue, Sep 10, 2019 at 12:38 PM Jan Høydahl <jan....@cominvent.com>
>>>> wrote:
>>>> 
>>>>> Please check the error message in solr.log on the server side and paste
>>>>> that here. Could be a bug 🕷
>>>>> 
>>>>> Jan Høydahl
>>>>> 
>>>>>> 10. sep. 2019 kl. 18:51 skrev Tyrone Tse <tyrone...@hotmail.com>:
>>>>>> 
>>>>>> Jan using https://mkjwk.org/
>>>>>> I generated the following JWK
>>>>>> 
>>>>>> {
>>>>>> 
>>>>>> "kty": "oct",
>>>>>> "use": "sig",
>>>>>> "kid": "solr",
>>>>>> "k":
>>>>> 
>> "pIpVnjhuAj9DBg8e2lwya7o_uZMM3Wqo2eK0uchOza0vBS-orZNYTkLcHTLXF9JaCBR08tWfFEWVPENF6sXKuaj8Mn65Kc3QUmS-csblVvjj69dXk2Mi-Zs2iDDM3QyyvdiyRpfxE-xKwwjhU47xs7M0Dq69I1UE5nrFkczLf9qe3b47ha3eBQDm1_zg8EVwxadJ7gfQ97jn2MtT6hHrts9YD6_Z_heAdYC2QYjBBIdEXzZgHSKqmPNNhDvAChF9AfmNiUlfAG_g0jMMLKYEUv6ck3KJA6A1JBq1iEstjvF7hchFgdgyVRCR5P8UM6n6Hb0YrHjjANyEYIZD9mFfBQ",
>>>>>> "alg": "HS256"
>>>>>> }
>>>>>> 
>>>>>> So I put the generated JWK into my solr server security.json file like
>>>>> this
>>>>>> 
>>>>>> {
>>>>>> "authentication": {
>>>>>>  "class":"solr.JWTAuthPlugin",
>>>>>>  "blockUnknown": true,
>>>>>>  "jwk" : {
>>>>>>        "kty": "oct",
>>>>>>        "use": "sig",
>>>>>>        "kid": "solr",
>>>>>>        "k":
>>>>> 
>> "pIpVnjhuAj9DBg8e2lwya7o_uZMM3Wqo2eK0uchOza0vBS-orZNYTkLcHTLXF9JaCBR08tWfFEWVPENF6sXKuaj8Mn65Kc3QUmS-csblVvjj69dXk2Mi-Zs2iDDM3QyyvdiyRpfxE-xKwwjhU47xs7M0Dq69I1UE5nrFkczLf9qe3b47ha3eBQDm1_zg8EVwxadJ7gfQ97jn2MtT6hHrts9YD6_Z_heAdYC2QYjBBIdEXzZgHSKqmPNNhDvAChF9AfmNiUlfAG_g0jMMLKYEUv6ck3KJA6A1JBq1iEstjvF7hchFgdgyVRCR5P8UM6n6Hb0YrHjjANyEYIZD9mFfBQ",
>>>>>>        "alg": "HS256"
>>>>>>      }
>>>>>> }
>>>>>> }
>>>>>> 
>>>>>> Then I went to https://jwt.io/ to generate the JWT using the value of
>>>>>> "k":
>>>>> 
>> "pIpVnjhuAj9DBg8e2lwya7o_uZMM3Wqo2eK0uchOza0vBS-orZNYTkLcHTLXF9JaCBR08tWfFEWVPENF6sXKuaj8Mn65Kc3QUmS-csblVvjj69dXk2Mi-Zs2iDDM3QyyvdiyRpfxE-xKwwjhU47xs7M0Dq69I1UE5nrFkczLf9qe3b47ha3eBQDm1_zg8EVwxadJ7gfQ97jn2MtT6hHrts9YD6_Z_heAdYC2QYjBBIdEXzZgHSKqmPNNhDvAChF9AfmNiUlfAG_g0jMMLKYEUv6ck3KJA6A1JBq1iEstjvF7hchFgdgyVRCR5P8UM6n6Hb0YrHjjANyEYIZD9mFfBQ",
>>>>>> 
>>>>>> for the secret key
>>>>>> 
>>>>>> My JWT header
>>>>>> {
>>>>>> "alg": "HS256",
>>>>>> "typ": "JWT"
>>>>>> }
>>>>>> 
>>>>>> Payload
>>>>>> 
>>>>>> {
>>>>>> "sub": "1234567890",
>>>>>> "name": "John Doe",
>>>>>> "iat": 1516239022
>>>>>> }
>>>>>> 
>>>>>> Secret key
>>>>>> 
>>>>> 
>> pIpVnjhuAj9DBg8e2lwya7o_uZMM3Wqo2eK0uchOza0vBS-orZNYTkLcHTLXF9JaCBR08tWfFEWVPENF6sXKuaj8Mn65Kc3QUmS-csblVvjj69dXk2Mi-Zs2iDDM3QyyvdiyRpfxE-xKwwjhU47xs7M0Dq69I1UE5nrFkczLf9qe3b47ha3eBQDm1_zg8EVwxadJ7gfQ97jn2MtT6hHrts9YD6_Z_heAdYC2QYjBBIdEXzZgHSKqmPNNhDvAChF9AfmNiUlfAG_g0jMMLKYEUv6ck3KJA6A1JBq1iEstjvF7hchFgdgyVRCR5P8UM6n6Hb0YrHjjANyEYIZD9mFfBQ
>>>>>> 
>>>>>> Which generates the following encoded JWT
>>>>>> 
>>>>> 
>> eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.ZdtjglSME79nlq5HJs0bUYiFkSlDKytKS07IMWz9o44
>>>>>> 
>>>>>> 
>>>>>> So I then tried to use the JWT encoded value in a curl command to Solr
>>>>>> as follows
>>>>>> 
>>>>>> curl -H "Authorization: Bearer
>>>>>> 
>>>>> 
>> eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.ZdtjglSME79nlq5HJs0bUYiFkSlDKytKS07IMWz9o44"
>>>>>> http://localhost:8983/solr/admin/info/system
>>>>>> 
>>>>>> I get the error message
>>>>>> 
>>>>>> <html>
>>>>>> <head>
>>>>>> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
>>>>>> <title>Error 401 JWT validation failed</title>
>>>>>> </head>
>>>>>> <body><h2>HTTP ERROR 401</h2>
>>>>>> <p>Problem accessing /solr/admin/info/system. Reason:
>>>>>> <pre>    JWT validation failed</pre></p>
>>>>>> </body>
>>>>>> </html>
>>>>>> 
>>>>>> 
>>>>>> Am I missing something in my security.json file ?
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Tue, Sep 10, 2019 at 5:30 AM Jan Høydahl <jan....@cominvent.com>
>>>>> wrote:
>>>>>>> 
>>>>>>> I think you are confusing JWK with the JWT token. JWK is only for
>>>>> defining
>>>>>>> the key, see https://mkjwk.org for an online JWK generator, you can
>>>>>>> choose HS256 as algorithm. Put the generated JWK in Solr's config and
>>>>> also
>>>>>>> use the generated key to sign your JWT. Then Solr should be able to
>>>>>>> validate the JWT.
>>>>>>> 
>>>>>>> --
>>>>>>> Jan Høydahl, search solution architect
>>>>>>> Cominvent AS - www.cominvent.com
>>>>>>> 
>>>>>>>> 10. sep. 2019 kl. 01:21 skrev Tyrone <tyrone....@gmail.com>:
>>>>>>>> 
>>>>>>>> Jan
>>>>>>>> 
>>>>>>>> Can my jwk object be something like
>>>>>>>> 
>>>>>>>> {alg": "HS256", "typ": "JWT",
>>>>>>>> 
>>>>>>>> "sub": "1234567890", "name": "John Doe", "iat": 1516239022,
>>>>>>>> 
>>>>>>>> “k" : "secret-key"}
>>>>>>>> 
>>>>>>>> Where k is the JWT secret key?
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Sent from my iPhone
>>>>>>>> 
>>>>>>>>> On Sep 9, 2019, at 1:48 AM, Jan Høydahl <jan....@cominvent.com>
>>>>> wrote:
>>>>>>>>> 
>>>>>>>>> In your security.json, add a JWK matching your signing algorithm,
>>>>> using
>>>>>>> the “jwk” JSON key.
>>>>>>>>> 
>>>>>>>>> Example:
>>>>>>>>> “jwk” : { "kty" : "oct", "kid" :
>>>>>>> "0afee142-a0af-4410-abcc-9f2d44ff45b5", "alg" : "HS256", "k" :
>>>>>>> "FdFYFzERwC2uCBB46pZQi4GG85LujR8obt-KWRBICVQ" }
>>>>>>>>> 
>>>>>>>>> Of course you need to find a way to encode your particular secret
>> in
>>>>>>> jwk format, there should be plenty of tools available for that. If
>> you
>>>>>>> intend to use symmetric key in prod you have to configure solr so
>> that
>>>>>>> security.json is not readable for anyone but the admin!
>>>>>>>>> 
>>>>>>>>> Jan Høydahl
>>>>>>>>> 
>>>>>>>>>> 9. sep. 2019 kl. 05:46 skrev Tyrone <tyrone....@gmail.com>:
>>>>>>>>>> 
>>>>>>>>>> HS256
>>>>>>> 
>>>>>>> 
>>>>> 
>>>> 
>> 

Reply via email to