The easiest way to authenticate end users is by using a 20 character long license key. This allows you to restrict which features your clients have access to, the expiry date, and more.If you anticipate that your clients will have many licenses, or if you prefer to authenticate them using username and password, Cryptolens supports several ways to accomplish this.
Method 1: If you are using the Customer portal and your customers have an account with us, you can use this approach. A new browser window will open where the customer can authenticate, allowing you to retreive all their licenses inside your application once authentication succeeds. Currently supported out of the box in .NET.Method 2: If you have assigned licenses to a Customer object in the portal, you can also authenticate them inside your application. This is covered in this article. This approach allows you to contol the user experience and customers do not need to have access to the customer portal. Currently supported out of the box in .NET and Python, and support for more languages is coming soon.Method 3: If your customer has many licenses and you want to issue them one main license, you can use this approach. This is similar to Method 2, except that users authenticate using a long string value instead of user name and password.Method 4: If you would like to limit the number of users that many use a certain license, you can use this approach. This is different from Method 1-3, where the goal was to make it easier for users to have many licenses and not have to keep track of them. In Method 4, the idea is to limit concurrent use based on users and not machine code.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Devolens (formerly Cryptolens) Documentation","colors":{"primary":"#220999","light":"#4A5AFF","dark":"#4A5AFF"},"logo":{"light":"https://mintcdn.com/cryptolensab/nFzAQWAQ7VFiqFf7/images/DEVOLENS-formerly-cryptolens-tight.svg?fit=max\u0026auto=format\u0026n=nFzAQWAQ7VFiqFf7\u0026q=85\u0026s=15bb4ad2214d0c8201f59582439e5a8f","dark":"https://mintcdn.com/cryptolensab/nFzAQWAQ7VFiqFf7/images/DEVOLENS-formerly-cryptolens-tight.svg?fit=max\u0026auto=format\u0026n=nFzAQWAQ7VFiqFf7\u0026q=85\u0026s=15bb4ad2214d0c8201f59582439e5a8f","href":"https://devolens.com/"},"favicon":{"light":"https://mintcdn.com/cryptolensab/W09lpa-yg5vOj8Uc/images/DevolensCircle.png?fit=max\u0026auto=format\u0026n=W09lpa-yg5vOj8Uc\u0026q=85\u0026s=f57eaf1cb9a5136f9b2e8d1b42cf5e36","dark":"https://mintcdn.com/cryptolensab/UggnyNDOQ_2RBPGh/logo512.svg?fit=max\u0026auto=format\u0026n=UggnyNDOQ_2RBPGh\u0026q=85\u0026s=0bfcdff9cc17f4eff6ffc7f27a39f7f8"},"navbar":{"links":[{"href":"mailto:[email protected]","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.cryptolens.io"}},"footer":{"socials":{"x":"https://x.com/cryptolens","github":"https://github.com/cryptolens","linkedin":"https://linkedin.com/company/cryptolens"}},"integrations":{"gtm":{"tagId":"GTM-N67G87DK"},"intercom":{"appId":"uyf5hx0o"}},"contextual":{"options":["copy","assistant",{"title":"Request feature","description":"Email us to suggest a new feature","icon":"envelope","href":"mailto:[email protected]"}],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://devolens.com/blog"},{"anchor":"Status page","icon":"signal","href":"https://status.cryptolens.io"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cryptolensab","hasAudioNarration":false,"actualSubdomain":"cryptolensab","customDomains":["help.cryptolens.io"],"gitSource":{"type":"github","owner":"cryptolens","repo":"support","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af47d1aec0de01b00c1fb68","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Libraries","count":167},{"language":"default","tag":".NET SDK Reference","count":132},{"language":"default","tag":"API Reference","count":107},{"language":"default","tag":"Generated Web API reference","count":106},{"language":"default","tag":"Guides","count":105},{"language":"default","tag":"Features","count":29},{"language":"default","tag":"Python SDK Reference","count":24},{"language":"default","tag":"Get Started","count":22},{"language":"default","tag":"Web UI","count":20},{"language":"default","tag":"Payments","count":17}]},"assistantConfig":{"enableStarterQuestions":true,"deflection":{"enabled":true,"email":"[email protected]"}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"6984e43b76d1c03101c334bf","deploymentId":"68515385c30e2a6392095912","questionText":"How to verify a license","status":"active","generatedBy":"manual","createdAt":"2026-02-05T18:40:59.618Z","updatedAt":"2026-02-05T18:40:59.618Z","__v":0}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"licensing-models/user-credentials","slug":"/licensing-models/user-credentials","pageMetadata":{"title":"User authentication","description":"Covers different ways that you can authenticate customers using user credentials instead of license keys.","href":"/licensing-models/user-credentials"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Covers different ways that you can authenticate customers using user credentials instead of license keys.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`introduction`,children:`Introduction`}),`\n`,_jsx(_components.p,{children:`The easiest way to authenticate end users is by using a 20 character long license key. This allows you to restrict which features your clients have access to, the expiry date, and more.`}),`\n`,_jsx(_components.p,{children:`If you anticipate that your clients will have many licenses, or if you prefer to authenticate them using username and password, Cryptolens supports several ways to accomplish this.`}),`\n`,_jsx(Heading,{level:`2`,id:`approaches`,children:`Approaches`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Method 1`}),`: If you are using the Customer portal and your customers have an account with us, you can use `,_jsx(_components.a,{href:`/licensing-models/user-login-intro`,children:`this approach`}),`. A new browser window will open where the customer can authenticate, allowing you to retreive all their licenses inside your application once authentication succeeds. Currently supported out of the box in `,_jsx(_components.strong,{children:`.NET`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Method 2`}),`: If you have assigned licenses to a `,_jsx(_components.a,{href:`https://app.cryptolens.io/Customer`,children:`Customer object`}),` in the portal, you can also authenticate them inside your application. This is covered in `,_jsx(_components.a,{href:`/examples/user-verification`,children:`this article`}),`. This approach allows you to contol the user experience and customers do not need to have access to the customer portal. Currently supported out of the box in `,_jsx(_components.strong,{children:`.NET`}),` and `,_jsx(_components.strong,{children:`Python`}),`, and support for more languages is coming soon.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Method 3`}),`: If your customer has many licenses and you want to issue them one main license, you can use `,_jsx(_components.a,{href:`/feature/web-ui/customer-secret`,children:`this approach`}),`. This is similar to Method 2, except that users authenticate using a long string value instead of user name and password.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Method 4`}),`: If you would like to limit the number of users that many use a certain license, you can use `,_jsx(_components.a,{href:`/licensing-models/user-based-activations`,children:`this approach`}),`. This is different from Method 1-3, where the goal was to make it easier for users to have many licenses and not have to keep track of them. In Method 4, the idea is to limit concurrent use based on users and not machine code.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"User authentication","description":"Covers different ways that you can authenticate customers using user credentials instead of license keys.","href":"/licensing-models/user-credentials"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Introduction","slug":"introduction","depth":2,"children":[]},{"title":"Approaches","slug":"approaches","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/cryptolensab/af38b9cc1445fe94/jscode.js"],"subdomain":"cryptolensab","siteName":"Devolens (formerly Cryptolens) Documentation","title":"User authentication - Devolens (formerly Cryptolens) Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-28T13:11:27.171Z","originalFileLocation":"licensing-models/user-credentials.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Covers different ways that you can authenticate customers using user credentials instead of license keys.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Devolens (formerly Cryptolens) Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cryptolensab/k3TwgdDK5B2nhhRD/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/cryptolensab/k3TwgdDK5B2nhhRD/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cryptolensab/k3TwgdDK5B2nhhRD/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cryptolensab/k3TwgdDK5B2nhhRD/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cryptolensab/k3TwgdDK5B2nhhRD/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cryptolensab/k3TwgdDK5B2nhhRD/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cryptolensab/k3TwgdDK5B2nhhRD/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cryptolensab/k3TwgdDK5B2nhhRD/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cryptolensab/k3TwgdDK5B2nhhRD/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"User authentication - Devolens (formerly Cryptolens) Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Covers different ways that you can authenticate customers using user credentials instead of license keys.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Devolens (formerly Cryptolens) Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://help.cryptolens.io/licensing-models/user-credentials\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cryptolensab.mintlify.site/_mintlify/api/og/v2?division=Models\u0026amp;title=User+authentication\u0026amp;description=Covers+different+ways+that+you+can+authenticate+customers+using+user+credentials+instead+of+license+keys.\u0026amp;theme=fa19ded7e62da99e42aced3c\u0026amp;signature=ff1ff75d0315ce8fa93c837b81c0b5ad1174e912f112a6e3ad6aa8361d8d91a5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"User authentication - Devolens (formerly Cryptolens) Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Covers different ways that you can authenticate customers using user credentials instead of license keys.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cryptolensab.mintlify.site/_mintlify/api/og/v2?division=Models\u0026amp;title=User+authentication\u0026amp;description=Covers+different+ways+that+you+can+authenticate+customers+using+user+credentials+instead+of+license+keys.\u0026amp;theme=fa19ded7e62da99e42aced3c\u0026amp;signature=ff1ff75d0315ce8fa93c837b81c0b5ad1174e912f112a6e3ad6aa8361d8d91a5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/cryptolensab/k3TwgdDK5B2nhhRD/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Devolens (formerly Cryptolens) Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#220999\">\u003clink data-mint-head rel=\"canonical\" href=\"https://help.cryptolens.io/licensing-models/user-credentials\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/licensing-models/user-credentials.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://help.cryptolens.io/#organization\",\"name\":\"Devolens (formerly Cryptolens) Documentation\",\"url\":\"https://help.cryptolens.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cryptolensab/nFzAQWAQ7VFiqFf7/images/DEVOLENS-formerly-cryptolens-tight.svg?fit=max\u0026auto=format\u0026n=nFzAQWAQ7VFiqFf7\u0026q=85\u0026s=15bb4ad2214d0c8201f59582439e5a8f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://help.cryptolens.io#website\",\"name\":\"Devolens (formerly Cryptolens) Documentation\",\"url\":\"https://help.cryptolens.io\",\"publisher\":{\"@id\":\"https://help.cryptolens.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://help.cryptolens.io/licensing-models/user-credentials#webpage\",\"url\":\"https://help.cryptolens.io/licensing-models/user-credentials\",\"name\":\"User authentication\",\"description\":\"Covers different ways that you can authenticate customers using user credentials instead of license keys.\",\"dateModified\":\"2026-01-28T13:11:27.171Z\",\"isPartOf\":{\"@id\":\"https://help.cryptolens.io#website\"},\"breadcrumb\":{\"@id\":\"https://help.cryptolens.io/licensing-models/user-credentials#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://help.cryptolens.io/licensing-models/user-credentials#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Licensing models\",\"item\":\"https://help.cryptolens.io/licensing-models\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Models\",\"item\":\"https://help.cryptolens.io/licensing-models/perpetual\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"User authentication\",\"item\":\"https://help.cryptolens.io/licensing-models/user-credentials\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://help.cryptolens.io/licensing-models/user-credentials#article\",\"headline\":\"User authentication\",\"name\":\"User authentication\",\"description\":\"Covers different ways that you can authenticate customers using user credentials instead of license keys.\",\"url\":\"https://help.cryptolens.io/licensing-models/user-credentials\",\"mainEntityOfPage\":{\"@id\":\"https://help.cryptolens.io/licensing-models/user-credentials#webpage\"},\"dateModified\":\"2026-01-28T13:11:27.171Z\",\"publisher\":{\"@id\":\"https://help.cryptolens.io/#organization\"},\"isPartOf\":{\"@id\":\"https://help.cryptolens.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Devolens (formerly Cryptolens) Documentation\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Devolens (formerly Cryptolens) Documentation\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/licensing-models/user-credentials.md","siteName":"Devolens (formerly Cryptolens) Documentation","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://devolens.com/blog"},{"anchor":"Status page","icon":"signal","href":"https://status.cryptolens.io"}]},"tabs":[{"tab":"Guides","groups":[{"group":"Get Started","icon":"flag-checkered","pages":[{"title":"Introduction","href":""},{"group":"Basics","icon":"graduation-cap","pages":[{"title":"Basics of Devolens","href":"/basics/index"},{"title":"Products, keys, customers, and activations","href":"/basics/product-and-keys"},{"title":"Web API","href":"/basics/webapi"}]},{"title":"Getting started guide","icon":"flag-checkered","href":"/getting-started/getting-started-guide"},{"title":"AI-assisted integration","icon":"microchip-ai","href":"/getting-started/build-with-ai"},{"title":"MCP server","icon":"plug","href":"/getting-started/mcp"},{"title":"Troubleshooting guide for licensing","icon":"stethoscope","href":"/getting-started/troubleshooting-guide"},{"group":"Platform specifics","icon":"laptop-mobile","pages":[{"title":"Platforms","href":"/getting-started/platform-overview"},{"title":".NET desktop application","href":"/getting-started/net-intro"},{"title":"Unity 3D / Mono","href":"/getting-started/unity"},{"title":"Android and iOS","href":"/getting-started/ios-android"},{"title":"Rhino 3D / Grashopper","href":"/getting-started/rhino-ceros-3d-grashopper"},{"title":"Python/Autodesk Maya","href":"/getting-started/python-autodesk-maya"},{"title":"Go","href":"/getting-started/go"},{"title":"Node Js","href":"/getting-started/node"},{"title":"Java","href":"/getting-started/java"},{"title":"C/C++","href":"/getting-started/cpp"},{"title":"AutoCAD","href":"/getting-started/autocad"},{"title":"Excel Addins","href":"/getting-started/excel"}]},{"title":"Checklist before publishing","icon":"ballot-check","href":"/getting-started/checklist-before-publishing"},{"title":"FAQ","icon":"messages-question","href":"/faq"}]},{"group":"Reference details","hidden":true,"searchable":true,"pages":[{"title":"Your Devolens account and billing","href":"/account/billing"},{"title":"Access tokens and RSA public key","icon":"key","href":"/getting-started/access-token"}]},{"group":"Licensing models","icon":"file-certificate","pages":[{"title":"Introduction","href":"/licensing-models/index"},{"group":"Models","pages":[{"title":"Perpetual licensing (try/buy)","href":"/licensing-models/perpetual"},{"title":"Subscription licensing (SaaS)","href":"/licensing-models/subscription"},{"title":"Usage-based licensing (pay per use)","href":"/licensing-models/usage-based"},{"title":"Node locked licenses","href":"/licensing-models/node-locked"},{"title":"Floating licenses","href":"/licensing-models/floating"},{"title":"SDK licensing","description":"Summary of how SDKs can be protected using Cryptolens Licensing.","href":"/licensing-models/sdk-licensing"},{"title":"User authentication","href":"/licensing-models/user-credentials"},{"title":"Per-user seats using activations","description":"Use activations to count licensed users instead of devices.","href":"/licensing-models/user-based-activations"},{"title":"Containerized Environments","href":"/licensing-models/containers"},{"title":"Site license","href":"/licensing-models/site-license"},{"title":"Pre-determined activations","href":"/licensing-models/pre-determined-activations"},{"title":"Subscription vs usage-based pricing","href":"/licensing-models/subscription-vs-usage-based"}]}]},{"group":"Examples","icon":"code","pages":[{"title":"Introduction","href":"/examples/index"},{"group":"Inside the app","pages":[{"title":"Key verification","href":"/examples/key-verification"},{"title":"Offline verification","href":"/examples/offline-verification"},{"title":"Trial keys","href":"/examples/verified-trials"},{"title":"User verifications","href":"/examples/user-verification"},{"title":"Data collection","href":"/examples/data-collection"}]},{"group":"Integration with external services","pages":[{"title":"Integrate with Zapier","href":"/examples/zapier"},{"title":"Integration with n8n","href":"/examples/integration-with-n8n"},{"title":"Key Generation","href":"/examples/key-generation"}]},{"group":"Enterprise tools","pages":[{"title":"License server","href":"/feature/license-server/index"},{"title":"Data analysis and reports","href":"/examples/data-analysis"},{"title":"Manual activation of a large number of machines","href":"/examples/manual-activation"},{"title":"Migrate to Cryptolens from a third party licensing system","href":"/examples/migrate"},{"title":"Reverse proxy","href":"/examples/reverse-proxy"}]}]},{"group":"Payments","icon":"credit-card","pages":[{"title":"Overview","href":"/payments/index"},{"group":"Payment Forms","pages":[{"title":"Introduction","href":"/payments/forms/intro"},{"title":"Example","href":"/payments/forms/example"},{"title":"Request Items","href":"/payments/forms/request-items"},{"title":"Custom field","href":"/payments/forms/custom-field"},{"title":"Sessions","href":"/payments/forms/sessions"},{"title":"(Example) Automating customer and license creation","href":"/payments/forms/automating-customer-and-license-creation"}]},{"group":"Recurring Payments","pages":[{"title":"Recurring payments","href":"/payments/recurring/index"},{"title":"Setting things up","href":"/payments/recurring/setup"},{"title":"Managing customers","href":"/payments/recurring/managing-customers"},{"title":"Metered usage","href":"/payments/recurring/metered-usage"},{"title":"(Example) Stripe products and plans","href":"/payments/recurring/stripe-product-example"},{"title":"Troubleshooting guide","href":"/payments/recurring/troubleshooting"}]},{"group":"Third party","pages":[{"title":"Recurring payments with Stripe without Cryptolens GUI","href":"/payments/thirdparty/custom-interface"},{"title":"Integrating with external payment providers","href":"/payments/thirdparty/external-providers"},{"title":"Integration with FastSpring","href":"/payments/thirdparty/fastspring"},{"title":"Zapier and n8n","href":"/payments/thirdparty/zapier-and-n8n"}]}]},{"group":"Features","pages":[{"group":"Web UI","pages":[{"title":"Control Panel and Web UI","href":"/feature/web-ui/index"},{"group":"Product","pages":[{"title":"SKGL vs. SKM15","href":"/feature/web-ui/skgl-vs-skm15"},{"title":"Searching for Licenses using Linq Queries","href":"/feature/web-ui/linq-search-product"},{"title":"Customize which licenses are shown first","href":"/feature/web-ui/order-by-product"},{"title":"Delete keys","href":"/feature/web-ui/delete-keys"},{"title":"Feature Definitions","href":"/feature/web-ui/feature-definitions"},{"title":"Feature Templates","href":"/feature/web-ui/feature-templates"},{"title":"License Templates","href":"/feature/web-ui/license-templates"},{"title":"Maximum number of machines","href":"/feature/web-ui/maximum-number-of-machines"},{"title":"Start countdown upon activation (aka trial activation)","href":"/feature/web-ui/trial-activation"},{"title":"Keys that don’t expire","href":"/feature/web-ui/keys-that-dont-expire"},{"title":"Export Keys To Spreadsheet","href":"/feature/web-ui/export-keys-to-spreadsheet"},{"title":"Automatic expiration notice","href":"/feature/web-ui/automatic-expiration-notice"},{"title":"Product configuration","href":"/feature/web-ui/product-configuration"}]},{"group":"Customer","pages":[{"title":"Customer secret","href":"/feature/web-ui/customer-secret"}]},{"group":"Account","pages":[{"title":"Add additional admins","href":"/feature/web-ui/multiple-admins"},{"title":"Restricted accounts","href":"/feature/web-ui/restricted-accounts"},{"title":"Company SSO and SCIM","href":"/feature/web-ui/sso-and-scim"}]},{"group":"Analytics","pages":[{"title":"Anomaly detection","href":"/feature/web-ui/anomaly-detection"},{"title":"License Insights","href":"/feature/web-ui/kpi-dashboards"}]}]},{"group":"Reseller portal","pages":[{"title":"Introduction","href":"/feature/reseller-portal/index"},{"title":"Reseller portal for resellers","href":"/feature/reseller-portal/reseller"},{"title":"Reseller portal for vendors","href":"/feature/reseller-portal/vendor"}]},{"group":"License server","pages":[{"title":"License server","href":"/feature/license-server/index"}]},{"group":"Messaging API","pages":[{"title":"Messaging API","href":"/feature/messaging/index"},{"title":"Updates tracking","href":"/feature/messaging/updates-tracking"},{"title":"Notifications","href":"/feature/messaging/notifications"}]},{"group":"Customer portal","pages":[{"title":"Customer portal","href":"/feature/customer-portal/index"}]},{"group":"Activation forms","pages":[{"title":"Activation Forms","href":"/feature/activation-form/index"}]}]},{"group":"Security","icon":"lock","pages":[{"title":"Introduction","href":"/security/index"},{"group":"Privacy and GDPR","pages":[{"title":"GDPR","href":"/security/gdpr"},{"title":"Data processor agreement","href":"/security/dpa"},{"title":"Data protection policy","href":"/security/data-policy"},{"title":"Ask Devolens privacy","sidebarTitle":"Ask Devolens privacy","href":"/security/ask-devolens-privacy"}]},{"group":"Security","pages":[{"title":"Safeguarding measures","href":"/security/safeguarding-measures"},{"title":"Technical and Organizational Measures implemented by Cryptolens","href":"/security/tech-and-org-measures"}]},{"group":"Other","pages":[{"title":"IPs used by the API","href":"/security/api-ips"},{"title":"Devolens Standard Service Level Agreement","href":"/security/sla"}]}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]},{"tab":"Libraries","pages":[{"title":"Libraries","href":"/libraries"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"User authentication - Devolens (formerly Cryptolens) Documentation","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}