couchdb-calculate-session-id
calculates valid CouchDB session IDs using username, salt, secret & timestamp
Example
var calculateSessionId = require('couchdb-calculate-session-id')
var sessionId = calculateSessionId(
'pat',
'24eb90e9e1343977b8323857287ffca4',
'78875068a1979fb910d5d8f37d316aa4',
1449689785
)
Arguments
Argument | Type | Description |
---|
username | String | name property of \_users doc |
---|
usersalt | String | salt property of \_users doc |
---|
serversecret | String | couch_httpd_auth.secret of CouchDB configuration |
---|
timestamp | Number | Number of seconds elapsed since 1 January 1970 00:00:00 UTC |
---|
How CouchDB does it using Erlang
make_cookie_hash(UserName, Secret, TimeStamp) ->
SessionData = UserName ++ ":" ++ erlang:integer_to_list(TimeStamp, 16),
Hash = crypto:sha_mac(Secret, SessionData),
couch_util:encodeBase64Url(SessionData ++ ":" ++ ?b2l(Hash)).
Credits
All credits due to @christophwitzko,
@indutny & @janl:
https://gist.github.com/janl/4583f5eb4c0d8216cc5f
License
Apache-2.0