Thin wrapper
All protocol work — authorization code + PKCE, token storage, silent renew, session monitoring — stays in oidc-client-ts. This library only bridges it into Vue's reactivity system.
A lightweight, fully typed wrapper around oidc-client-ts — react-oidc-context, ported to Vue idioms.
pnpm add @dlukt/vue-oidc-context oidc-client-tsPublished under the
@dluktscope — the unscoped npm namevue-oidc-contextbelongs to an unrelated package.
// main.ts
import { createApp } from "vue";
import { createOidcAuth } from "@dlukt/vue-oidc-context";
import App from "./App.vue";
const auth = createOidcAuth({
authority: "https://demo.duendesoftware.com",
client_id: "interactive.public",
redirect_uri: `${window.location.origin}/`,
onSigninCallback: () => {
window.history.replaceState({}, document.title, window.location.pathname);
},
});
createApp(App).use(auth).mount("#app");<script setup lang="ts">
import { useAuth } from "@dlukt/vue-oidc-context";
const { user, isAuthenticated, isLoading, signinRedirect, signoutRedirect } =
useAuth();
</script>
<template>
<div v-if="isLoading">Signing you in/out…</div>
<template v-else-if="isAuthenticated">
Hello {{ user?.profile.name }}
<button @click="signoutRedirect()">Log out</button>
</template>
<button v-else @click="signinRedirect()">Log in</button>
</template>