
Research
Security News
Lazarus Strikes npm Again with New Wave of Malicious Packages
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
@next-auth/dgraph-adapter
Advanced tools
Open Source. Full Stack. Own Your Data.
This is the Dgraph Adapter for next-auth
. This package can only be used in conjunction with the primary next-auth
package. It is not a standalone package.
You can find two Graphql schemas in the docs
.
see Securing your database
).next-auth
and @next-auth/dgraph-adapter
npm install next-auth @next-auth/dgraph-adapter
pages/api/[...nextauth].js
next-auth configuration object.import NextAuth from "next-auth"
import { DgraphAdapter } from "@next-auth/dgraph-adapter";
// For more information on each option (and a full list of options) go to
// https://next-auth.js.org/configuration/options
export default NextAuth({
// https://next-auth.js.org/configuration/providers
providers: [
...,
],
adapter: DgraphAdapter({
endpoint: process.env.DGRAPH_GRAPHQL_ENDPOINT,
authToken: process.env.DGRAPH_GRAPHQL_KEY,
// you can omit the following properties if you are running an unsecure schema
authHeader: "<YOUR AUTH HEADER>",
jwtSecret: process.env.SECRET
})
...
})
The simplest way to use Dgraph is by copy pasting the unsecure schema into your dashboard. Then create an api client key and grab your endpoint to initialize your DgraphClient
. Forget about authHeader
and jwtSecret
.
Fore sake of security and mostly if your client directly communicate with the graphql server you obviously want to restrict the access to the types used by next-auth. That's why you see a lot of @auth directive alongide this types in the schema.
The first thing to do in order to secure your graphql backend is to define the Dgraph.Authorization
object at the bottom of your schema and provide authHeader
and jwtSecret
values to the DgraphClient.
# Dgraph.Authorization {"VerificationKey":"<YOUR JWT SECRET HERE>","Header":"<YOUR AUTH HEADER HERE>","Namespace":"<YOUR CUSTOM NAMESPACE HERE>","Algo":"HS256"}
This is the key you use to sign the JWT. Probably your process.env.SECRET
.
The Header
tells Dgraph where to lookup for a jwt with auth credentials. You have to configure it a te bottom of your schema. This header is the same as the authHeader
property you provide when you instantiate the DgraphClient.
Dgraph only works with HS256 or RS256 algorithms. If you want to use session jwt to securely interact with your dgraph database you have to customize next-auth encode and decode functions because the default algorithm is HS512. You can there going further and customize the jwt with roles if you want to implement RBAC logic
.
import * as jwt from "jsonwebtoken";
export default NextAuth({
...
session: {
jwt: true
},
jwt: {
secret: process.env.SECRET,
encode: async ({ secret, token }) => {
return jwt.sign({
...token,
userId: token.id,
// role: "ADMIN" for RBAC
},
secret,
{
algorithm: "HS256",
expiresIn: 30 * 24 * 60 * 60; // 30 days
});;
},
decode: async ({ secret, token }) => {
return jwt.verify(token, secret, { algorithms: ["HS256"] });
}
},
...
})
Once your Dgraph.Authorization
define in your schema and this JWT settings set, this will allow you to define @auth rules
for every part of your schema.
type User
@auth(
...
query: { or: [
{
rule: """
query ($userId: String!) {
queryUser(filter: { id: { eq: $userId } } ) {
id
}
}
"""
},
{ rule: "{$role { eq: "ADMIN" } }" }
{ rule: "{$nextAuth { eq: true } }" },
]},
...
) {
id: ID
...
}
We're open to all community contributions! If you'd like to contribute in any way, please read our Contributing Guide.
ISC
FAQs
Dgraph adapter for next-auth.
We found that @next-auth/dgraph-adapter demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 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
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.
Security News
Opengrep continues building momentum with the alpha release of its Playground tool, demonstrating the project's rapid evolution just two months after its initial launch.