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