Sandor Molnar created KNOX-2579:
-----------------------------------

             Summary: Make token passcode secure in DB token state backend
                 Key: KNOX-2579
                 URL: https://issues.apache.org/jira/browse/KNOX-2579
             Project: Apache Knox
          Issue Type: New Feature
          Components: Server
    Affects Versions: 1.6.0
            Reporter: Sandor Molnar
            Assignee: Sandor Molnar
             Fix For: 1.6.0


With KNOX-2554, we now have the ability to store passcode tokens in relational 
databases. However, it indicates poor security practice if sensitive data is 
stored in plain text format. Since the {{token_id}} JWT claim can be used as a 
passcode, we need to make sure it's saved in a hashed format. To be able to do 
this, the following is going to be implemented:
 * keep the current {{token_id}} column as a primary key (UUID can be used here 
as   key)
 * add a new column called \{[passcode}} which will store the hashed value of 
the {{token.id}} claim

By default, {{HS256}} is going to be used as a hash algorithm, but end-users 
can configure it via the {{gateway_database_hash_alg}} gateway level 
configuration. A new pre-defined alias name is to be introduced too: 
{{gateway_database_hash_key}}. End-users must save the desired key using this 
alias if they use the new {{JDBCTokenStateService}} as the token management 
backend. Please note that key size it's very important for hash-based 
algorithms so using the {{master secret}} is not an option here.

The token verification logic has to be changed too (need to hash {{token.id}} 
before getting expiration from the database).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to