
Research
/Security News
Weaponizing Discord for Command and Control Across npm, PyPI, and RubyGems.org
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
@opensaas/keystone-nextjs-auth
Advanced tools
This package enables the addition of social auth to keystone-6.
This package enables the addition of social auth to keystone-6.
This uses NextAuth.js (https://next-auth.js.org/) project to add social auth to Keystone-6 (https://keystonejs.com/). Primary testing has been done with Auth0, happy for others to test other providers/give feedback or send through a PR.
Add package by yarn add @opensaas/keystone-nextjs-auth
then add the following to your keystone.ts
:
Add import...
import { createAuth } from '@opensaas/keystone-nextjs-auth';
import Auth0 from '@opensaas/keystone-nextjs-auth/providers/auth0';
Add you Auth configuration including providers
for Provider configuration see https://next-auth.js.org/configuration/providers. For Provider configuration replace next-auth/providers/
with @opensaas/keystone-nextjs-auth/providers/
let sessionSecret = process.env.SESSION_SECRET;
if (!sessionSecret) {
if (process.env.NODE_ENV === 'production') {
throw new Error(
'The SESSION_SECRET environment variable must be set in production'
);
} else {
sessionSecret = '-- DEV COOKIE SECRET; CHANGE ME --';
}
}
const auth = createAuth({
listKey: 'User',
identityField: 'subjectId',
sessionData: `id name email`,
autoCreate: true,
resolver: async ({user, profile, account}) => {
const username = user.name as string;
const email = user.email as string;
return { email, username };
},
keystonePath: '/admin',
sessionSecret,
providers: [
Auth0({
clientId: process.env.AUTH0_CLIENT_ID || 'Auth0ClientID',
clientSecret: process.env.AUTH0_CLIENT_SECRET || 'Auth0ClientSecret',
domain: process.env.AUTH0_DOMAIN || 'opensaas.au.auth0.com',
}),
]
});
Wrap your keystone config in auth.withAuth
.
export default auth.withAuth(
config({
server: {},
db: {},
ui: {},
lists,
...
});
Provider configuration see https://next-auth.js.org/configuration/providers. For Keystone-6 Configuration see https://keystonejs.com/ for example see the example backend
'User'
). Make sure any required fields are set using the *Map
fields, see note below.'subjectId'
). You will need to add this field to your list schema specified by listKey
. An example can be found here.'id name email'
),key:value
pairs that define what is copied from the User object returned from NextAuth in the SignIn callback (https://next-auth.js.org/configuration/callbacks#sign-in-callback) Left side is Keystone side, right is what comes from NextAuth eg: { subjectId: 'id', name: 'name' }
Note: The Keystone create-keystone-app
CLI app (generally run with yarn create keystone-app
/npm init keystone-app
) will set a required password
field on the User
list. If you've used this to set up your project you will need to modify your list schema to set the field as not required, or remove it entirely if you don't plan to use the default Keystone auth system at all.
If you want to run this package locally
After cloning run yarn install
and either:
yarn dev
to run both the frontend and backend oryarn dev:backend
for just the backendThe Demo App is configured in next.config.js
to proxy /api/auth
to the the host setup using the environment varible BACKEND_BASE_URL
in development set export BACKEND_BASE_URL=http://localhost:3000
you will also need to set your NEXTAUTH_URL
environment varible see https://next-auth.js.org/configuration/options for more information.
FAQs
This package enables the addition of social auth to keystone-6.
The npm package @opensaas/keystone-nextjs-auth receives a total of 108 weekly downloads. As such, @opensaas/keystone-nextjs-auth popularity was classified as not popular.
We found that @opensaas/keystone-nextjs-auth demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
Security News
Socket now integrates with Bun 1.3’s Security Scanner API to block risky packages at install time and enforce your organization’s policies in local dev and CI.
Research
The Socket Threat Research Team is tracking weekly intrusions into the npm registry that follow a repeatable adversarial playbook used by North Korean state-sponsored actors.