## Memory Resolver The `MEMORY` resolver is a built-in resolver for JWTs. It is mostly used by test setups but can be used to test the simplest of environments where there is one or very few accounts, and the account JWTs don’t change often. The basic configuration for the server requires: - The operator JWT - `resolver` set to `MEMORY` - `resolver_preload` set to an object where account public keys are mapped to account JWTs. ### Create Required Entities Let’s create the setup: ```text > nsc add operator -n memory Generated operator key - private key stored "/Users/synadia/.nkeys/memory/memory.nk" Success! - added operator "memory" > nsc add account --name A Generated account key - private key stored "/Users/synadia/.nkeys/memory/accounts/A/A.nk" Success! - added account "A" > nsc describe account -W ╭──────────────────────────────────────────────────────────────────────────────────────╮ │ Account Details │ ├───────────────────────────┬──────────────────────────────────────────────────────────┤ │ Name │ A │ │ Account ID │ ACSU3Q6LTLBVLGAQUONAGXJHVNWGSKKAUA7IY5TB4Z7PLEKSR5O6JTGR │ │ Issuer ID │ ODWZJ2KAPF76WOWMPCJF6BY4QIPLTUIY4JIBLU4K3YDG3GHIWBVWBHUZ │ │ Issued │ 2019-04-30 20:21:34 UTC │ │ Expires │ │ ├───────────────────────────┼──────────────────────────────────────────────────────────┤ │ Max Connections │ Unlimited │ │ Max Leaf Node Connections │ Unlimited │ │ Max Data │ Unlimited │ │ Max Exports │ Unlimited │ │ Max Imports │ Unlimited │ │ Max Msg Payload │ Unlimited │ │ Max Subscriptions │ Unlimited │ │ Exports Allows Wildcards │ True │ ├───────────────────────────┼──────────────────────────────────────────────────────────┤ │ Imports │ None │ │ Exports │ None │ ╰───────────────────────────┴──────────────────────────────────────────────────────────╯ > cat /Users/synadia/.nsc/nats/memory/accounts/A/A.jwt eyJ0eXAiOiJqd3QiLCJhbGciOiJlZDI1NTE5In0.eyJqdGkiOiJPRFhJSVI2Wlg1Q1AzMlFJTFczWFBENEtTSDYzUFNNSEZHUkpaT05DR1RLVVBISlRLQ0JBIiwiaWF0IjoxNTU2NjU1Njk0LCJpc3MiOiJPRFdaSjJLQVBGNzZXT1dNUENKRjZCWTRRSVBMVFVJWTRKSUJMVTRLM1lERzNHSElXQlZXQkhVWiIsIm5hbWUiOiJBIiwic3ViIjoiQUNTVTNRNkxUTEJWTEdBUVVPTkFHWEpIVk5XR1NLS0FVQTdJWTVUQjRaN1BMRUtTUjVPNkpUR1IiLCJ0eXBlIjoiYWNjb3VudCIsIm5hdHMiOnsibGltaXRzIjp7InN1YnMiOi0xLCJjb25uIjotMSwibGVhZiI6LTEsImltcG9ydHMiOi0xLCJleHBvcnRzIjotMSwiZGF0YSI6LTEsInBheWxvYWQiOi0xLCJ3aWxkY2FyZHMiOnRydWV9fX0._WW5C1triCh8a4jhyBxEZZP8RJ17pINS8qLzz-01o6zbz1uZfTOJGvwSTS6Yv2_849B9iUXSd-8kp1iMXHdoBA > nsc add user --name TA Generated user key - private key stored “/Users/synadia/.nkeys/memory/accounts/A/users/TA.nk" Generated user creds file “/Users/synadia/.nkeys/memory/accounts/A/users/TA.creds" Success! - added user "TA" to "A" ``` ### Create the Server Config With the above entries, we can reference the operator JWT and the account JWT in a server configuration. Remember that your configuration will be in `$NSC_HOME/nats//.jwt` for the operator. The account JWT will be in `$NSC_HOME/nats//accounts//.jwt` ```text operator: /Users/synadia/.nsc/nats/memory/memory.jwt resolver: MEMORY resolver_preload: { ACSU3Q6LTLBVLGAQUONAGXJHVNWGSKKAUA7IY5TB4Z7PLEKSR5O6JTGR: eyJ0eXAiOiJqd3QiLCJhbGciOiJlZDI1NTE5In0.eyJqdGkiOiJPRFhJSVI2Wlg1Q1AzMlFJTFczWFBENEtTSDYzUFNNSEZHUkpaT05DR1RLVVBISlRLQ0JBIiwiaWF0IjoxNTU2NjU1Njk0LCJpc3MiOiJPRFdaSjJLQVBGNzZXT1dNUENKRjZCWTRRSVBMVFVJWTRKSUJMVTRLM1lERzNHSElXQlZXQkhVWiIsIm5hbWUiOiJBIiwic3ViIjoiQUNTVTNRNkxUTEJWTEdBUVVPTkFHWEpIVk5XR1NLS0FVQTdJWTVUQjRaN1BMRUtTUjVPNkpUR1IiLCJ0eXBlIjoiYWNjb3VudCIsIm5hdHMiOnsibGltaXRzIjp7InN1YnMiOi0xLCJjb25uIjotMSwibGVhZiI6LTEsImltcG9ydHMiOi0xLCJleHBvcnRzIjotMSwiZGF0YSI6LTEsInBheWxvYWQiOi0xLCJ3aWxkY2FyZHMiOnRydWV9fX0._WW5C1triCh8a4jhyBxEZZP8RJ17pINS8qLzz-01o6zbz1uZfTOJGvwSTS6Yv2_849B9iUXSd-8kp1iMXHdoBA } ``` Save the config at server.conf and start the server: ```text > nats-server -c server.conf ``` Start a subscriber: ```text > nats-sub -creds /Users/synadia/.nkeys/memory/accounts/A/users/TA.creds ">" Listening on [>] ```