---
updatedAt: 2026-10-13T19:10:48.000Z
agentTools:
  projectIndex: https://docs.wristband.dev/llms.txt
---

# Authentication SDKs

Wristband is rapidly expanding its SDK ecosystem to deliver a frictionless auth integration experience.

Visit <Anchor target="_blank" href="https://github.com/orgs/wristband-dev/repositories">Wristband's GitHub</Anchor> to browse our active repositories. Our ecosystem is rapidly growing, with more SDKs added regularly.

## Auth SDKs for Backend Server Integration Pattern

<Callout icon="far fa-circle-info" theme="info">
  ### Pairing Backend and Frontend SDKs

  The backend server pattern connects your frontend and backend using two coordinated SDKs:

  - Backend SDK: Manages all authentication requests directly with Wristband.
  - Frontend SDK: Gives your client-side code easy access to session data, tokens, and user state.
</Callout>

### Backend SDKs

<HTMLBlock>{`
<div class="button-container">
  
    <a href="https://github.com/wristband-dev/aspnet-auth" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/dotnet-icon.png" alt="backend server icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">ASP.NET Auth</h3>
            <p>An SDK for ASP.NET Core (C# backend) for handling user authentication and token management.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
  </a>
  
      <a href="https://github.com/wristband-dev/django-auth" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/python-icon.png" alt="backend server icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">Django Auth</h3>
            <p>An SDK for Python Django for handling user authentication and token management.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
    </a>
  
    <a href="https://github.com/wristband-dev/express-auth" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/nodejs-icon.png" alt="backend server icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">Express Auth</h3>
            <p>An SDK for Express for handling user authentication and token management.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
  </a>
  
      <a href="https://github.com/wristband-dev/fastapi-auth" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/python-icon.png" alt="backend server icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">FastAPI Auth</h3>
            <p>An SDK for Python FastAPI for handling user authentication, session management, and token management.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
  </a>
  
  <a href="https://github.com/wristband-dev/go-auth" target="_blank" class="button" style="text-decoration: none;">
      <div class="button-content">
          <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/go-icon.png" alt="backend server icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
          <h3 style="margin: 4px 0 8px;">Go Auth</h3>
          <p>An SDK for Go for handling user authentication and token management.</p>
          <div class="try-it-now">
              <span>See GitHub</span>
              <span class="arrow">➡️</span>
          </div>
      </div>
  </a>

    <a href="https://github.com/wristband-dev/nestjs-auth" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/nestjs-icon.png" alt="backend server icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">NestJS Auth</h3>
            <p>An SDK for NestJS for handling user authentication and token management. Uses Express Auth under the hood.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
    </a>
  
    <a href="https://github.com/wristband-dev/nextjs-auth" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/nextjs-gradient-icon.png" alt="backend server icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">Next.js Auth</h3>
            <p>An SDK for Next.js for handling user authentication, session management, and token management. Works with both the App and Pages Routers.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
    </a>
    
</div>

<style>
    .button-container {
        display: grid;
        gap: 16px;
        margin-top: 32px;
    }

    .button-container {
        grid-template-columns: 1fr;
    }
  
    .button-container a,
    .button-container a:visited {
        text-decoration: none;
        color: inherit;
    }

    @media (min-width: 1200px) {
        .button-container {
            grid-template-columns: repeat(2, 1fr);
        }
    }

    .button {
        text-decoration: none;
        border: 1px solid #b0b0b0;
        border-radius: 8px;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: background-color 0.3s ease, box-shadow 0.3s ease;
    }

    .button:hover {
        border: 1px solid #ee60c6;
        box-shadow:0px 8px 16px rgba(0, 0, 0, 0.35), 0px 4px 8px rgba(238, 96, 198, 0.3);
        cursor: pointer !important;
        filter: brightness(90%) !important;
    }

    .button-content {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        padding: 8px 8px 8px 16px;
        height: 100%;
        width: 100%;
    }

    .emoji {
        font-size: 1.4em;
    }
  
    .logo {
        width: 48px;
        height: auto;
        margin-bottom: 8px;
    }
  
    .try-it-now {
      color: #ee60c6;
      display: flex;
      align-items: center;
      font-weight: bold;
      font-size: 1em;
      margin-top: auto;
      margin-right: 16px;
      align-self: flex-end;
    }

    .arrow {
        margin-left: 8px;
        font-size: 1.2em;
    }

    h3 {
        font-size: 1.2em;
        margin: 4px 0;
        font-weight: bold;
    }

    p {
        font-size: 0.9em;
    }
</style>
`}</HTMLBlock>

### Frontend SDKs

<HTMLBlock>{`
<div class="button-container">
  
    <a href="https://github.com/wristband-dev/react-client-auth" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/react-icon.png" alt="react icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">React Client Auth</h3>
            <p>A React SDK that pairs with your backend server to initialize and sync frontend sessions.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
    </a>
  
      <a href="javascript:void(0)" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/vue-icon.png" alt="vue icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">Vue Client Auth</h3>
            <p>A Vue SDK that pairs with your backend server to initialize and sync frontend sessions.</p>
            <div class="try-it-now">
                <span>(Coming Soon...)</span>
                <span class="arrow">⌛</span>
            </div>
        </div>
    </a>
    
</div>

<style>
    .button-container {
        display: grid;
        gap: 16px;
        margin-top: 32px;
    }

    .button-container {
        grid-template-columns: 1fr;
    }
  
    .button-container a,
    .button-container a:visited {
        text-decoration: none;
        color: inherit;
    }

    @media (min-width: 1200px) {
        .button-container {
            grid-template-columns: repeat(2, 1fr);
        }
    }

    .button {
        text-decoration: none;
        border: 1px solid #b0b0b0;
        border-radius: 8px;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: background-color 0.3s ease, box-shadow 0.3s ease;
    }

    .button:hover {
        border: 1px solid #ee60c6;
        box-shadow:0px 8px 16px rgba(0, 0, 0, 0.35), 0px 4px 8px rgba(238, 96, 198, 0.3);
        cursor: pointer !important;
        filter: brightness(90%) !important;
    }

    .button-content {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        padding: 8px 8px 8px 16px;
        height: 100%;
        width: 100%;
    }

    .emoji {
        font-size: 1.4em;
    }
  
    .logo {
        width: 48px;
        height: auto;
        margin-bottom: 8px;
    }
  
    .try-it-now {
      color: #ee60c6;
      display: flex;
      align-items: center;
      font-weight: bold;
      font-size: 1em;
      margin-top: auto;
      margin-right: 16px;
      align-self: flex-end;
    }

    .arrow {
        margin-left: 8px;
        font-size: 1.2em;
    }

    h3 {
        font-size: 1.2em;
        margin: 4px 0;
        font-weight: bold;
    }

    p {
        font-size: 0.9em;
    }
</style>
`}</HTMLBlock>

***

## Auth SDKs for Machine-to-Machine (M2M) Integration Pattern

<HTMLBlock>{`
<div class="button-container">
  
    <a href="https://github.com/wristband-dev/aspnet-m2m-auth" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/dotnet-icon.png" alt="m2m aspnet icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">ASP.NET M2M Auth</h3>
            <p>An SDK for ASP.NET Core that can retrieve and cache an access token for M2M use cases.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
    </a>
  
    <a href="https://github.com/wristband-dev/python-m2m-auth" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/python-icon.png" alt="m2m nodejs icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">Python M2M Auth</h3>
            <p>An framework-agnostic SDK for Python that can retrieve and cache an access token for M2M use cases.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
    </a>
  
    <a href="https://github.com/wristband-dev/typescript-m2m-auth" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/typescript-icon.png" alt="m2m typescript icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">Typescript M2M Auth</h3>
            <p>A framework-agnostic SDK for Typescript that can retrieve and cache an access token for M2M use cases.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
    </a>

</div>

<style>
    .button-container {
        display: grid;
        gap: 16px;
        margin-top: 32px;
    }

    .button-container {
        grid-template-columns: 1fr;
    }
  
    .button-container a,
    .button-container a:visited {
        text-decoration: none;
        color: inherit;
    }

    @media (min-width: 1200px) {
        .button-container {
            grid-template-columns: repeat(2, 1fr);
        }
    }

    .button {
        text-decoration: none;
        border: 1px solid #b0b0b0;
        border-radius: 8px;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: background-color 0.3s ease, box-shadow 0.3s ease;
    }

    .button:hover {
        border: 1px solid #ee60c6;
        box-shadow:0px 8px 16px rgba(0, 0, 0, 0.35), 0px 4px 8px rgba(238, 96, 198, 0.3);
        cursor: pointer !important;
        filter: brightness(90%) !important;
    }

    .button-content {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        padding: 8px 8px 8px 16px;
        height: 100%;
        width: 100%;
    }

    .emoji {
        font-size: 1.4em;
    }
  
    .logo {
        width: 48px;
        height: auto;
        margin-bottom: 8px;
    }
  
    .try-it-now {
      color: #ee60c6;
      display: flex;
      align-items: center;
      font-weight: bold;
      font-size: 1em;
      margin-top: auto;
      margin-right: 16px;
      align-self: flex-end;
    }

    .arrow {
        margin-left: 8px;
        font-size: 1.2em;
    }

    h3 {
        font-size: 1.2em;
        margin: 4px 0;
        font-weight: bold;
    }

    p {
        font-size: 0.9em;
    }
</style>
`}</HTMLBlock>

***

## SDKs for Session Management

<HTMLBlock>{`
<div class="button-container">
  
    <a href="https://github.com/wristband-dev/typescript-session" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/typescript-icon.png" alt="typescript jwt icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">Typescript Session</h3>
            <p>A framework-agnostic TypeScript SDK that provides secure, encrypted cookie-based session management. <strong>Can be used with or without Wristband auth</strong>.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
    </a>


    
</div>

<style>
    .button-container {
        display: grid;
        gap: 16px;
        margin-top: 32px;
    }

    .button-container {
        grid-template-columns: 1fr;
    }
  
    .button-container a,
    .button-container a:visited {
        text-decoration: none;
        color: inherit;
    }

    @media (min-width: 1200px) {
        .button-container {
            grid-template-columns: repeat(2, 1fr);
        }
    }

    .button {
        text-decoration: none;
        border: 1px solid #b0b0b0;
        border-radius: 8px;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: background-color 0.3s ease, box-shadow 0.3s ease;
    }

    .button:hover {
        border: 1px solid #ee60c6;
        box-shadow:0px 8px 16px rgba(0, 0, 0, 0.35), 0px 4px 8px rgba(238, 96, 198, 0.3);
        cursor: pointer !important;
        filter: brightness(90%) !important;
    }

    .button-content {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        padding: 8px 8px 8px 16px;
        height: 100%;
        width: 100%;
    }

    .emoji {
        font-size: 1.4em;
    }
  
    .logo {
        width: 48px;
        height: auto;
        margin-bottom: 8px;
    }
  
    .try-it-now {
      color: #ee60c6;
      display: flex;
      align-items: center;
      font-weight: bold;
      font-size: 1em;
      margin-top: auto;
      margin-right: 16px;
      align-self: flex-end;
    }

    .arrow {
        margin-left: 8px;
        font-size: 1.2em;
    }

    h3 {
        font-size: 1.2em;
        margin: 4px 0;
        font-weight: bold;
    }

    p {
        font-size: 0.9em;
    }
</style>
`}</HTMLBlock>

***

## SDKs for JWT Validation

<HTMLBlock>{`
<div class="button-container">
  
    <a href="https://github.com/wristband-dev/aspnet-jwt" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/dotnet-icon.png" alt="aspnet jwt icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">ASP.NET JWT</h3>
            <p>An ASP.NET Core SDK that validates JWT access tokens issued by Wristband for user or machine authentication.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
  </a>
  
    <a href="https://github.com/wristband-dev/python-jwt" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/python-icon.png" alt="python jwt icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">Python JWT</h3>
            <p>A framework-agnostic Python SDK that validates JWT access tokens issued by Wristband for user or machine authentication.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
    </a>
  
    <a href="https://github.com/wristband-dev/typescript-jwt" target="_blank" class="button" style="text-decoration: none;">
        <div class="button-content">
            <img src="https://assets.wristband.dev/docs/ReadMe+docs/icons/frameworks/typescript-icon.png" alt="typescript jwt icon" height="32" width="32" class="icon" style="margin: 4px auto 8px 0;">
            <h3 style="margin: 4px 0 8px;">Typescript JWT</h3>
            <p>A framework-agnostic Typescript SDK that validates JWT access tokens issued by Wristband for user or machine authentication.</p>
            <div class="try-it-now">
                <span>See GitHub</span>
                <span class="arrow">➡️</span>
            </div>
        </div>
    </a>


    
</div>

<style>
    .button-container {
        display: grid;
        gap: 16px;
        margin-top: 32px;
    }

    .button-container {
        grid-template-columns: 1fr;
    }
  
    .button-container a,
    .button-container a:visited {
        text-decoration: none;
        color: inherit;
    }

    @media (min-width: 1200px) {
        .button-container {
            grid-template-columns: repeat(2, 1fr);
        }
    }

    .button {
        text-decoration: none;
        border: 1px solid #b0b0b0;
        border-radius: 8px;
        display: flex;
        align-items: center;
        justify-content: center;
        transition: background-color 0.3s ease, box-shadow 0.3s ease;
    }

    .button:hover {
        border: 1px solid #ee60c6;
        box-shadow:0px 8px 16px rgba(0, 0, 0, 0.35), 0px 4px 8px rgba(238, 96, 198, 0.3);
        cursor: pointer !important;
        filter: brightness(90%) !important;
    }

    .button-content {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        padding: 8px 8px 8px 16px;
        height: 100%;
        width: 100%;
    }

    .emoji {
        font-size: 1.4em;
    }
  
    .logo {
        width: 48px;
        height: auto;
        margin-bottom: 8px;
    }
  
    .try-it-now {
      color: #ee60c6;
      display: flex;
      align-items: center;
      font-weight: bold;
      font-size: 1em;
      margin-top: auto;
      margin-right: 16px;
      align-self: flex-end;
    }

    .arrow {
        margin-left: 8px;
        font-size: 1.2em;
    }

    h3 {
        font-size: 1.2em;
        margin: 4px 0;
        font-weight: bold;
    }

    p {
        font-size: 0.9em;
    }
</style>
`}</HTMLBlock>

<HTMLBlock>{`
<style>
.UpdatedAt {
  display: none;
}
</style>
`}</HTMLBlock>