mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 16:37:31 +00:00
token util
This commit is contained in:
5
.changeset/twenty-clouds-prove.md
Normal file
5
.changeset/twenty-clouds-prove.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@zitadel/client": patch
|
||||
---
|
||||
|
||||
dynamic properties for system token utility
|
@@ -1,4 +1,4 @@
|
||||
import { importPKCS8, SignJWT } from "jose";
|
||||
import { newSystemToken } from "@zitadel/client/node";
|
||||
import { getInstanceDomainByHost } from "./zitadel";
|
||||
|
||||
export async function getInstanceUrl(host: string): Promise<string> {
|
||||
@@ -30,14 +30,11 @@ export async function systemAPIToken() {
|
||||
|
||||
const decodedToken = Buffer.from(key, "base64").toString("utf-8");
|
||||
|
||||
const token = new SignJWT({})
|
||||
.setProtectedHeader({ alg: "RS256" })
|
||||
.setIssuedAt()
|
||||
.setExpirationTime("1h")
|
||||
.setIssuer(userID)
|
||||
.setSubject(userID)
|
||||
.setAudience(audience)
|
||||
.sign(await importPKCS8(decodedToken, "RS256"));
|
||||
const token = newSystemToken({
|
||||
audience: audience,
|
||||
subject: userID,
|
||||
key: decodedToken,
|
||||
});
|
||||
|
||||
return token;
|
||||
}
|
||||
|
@@ -27,13 +27,23 @@ export function createClientTransport(token: string, opts: GrpcTransportOptions)
|
||||
});
|
||||
}
|
||||
|
||||
export async function newSystemToken() {
|
||||
export async function newSystemToken({
|
||||
audience,
|
||||
subject,
|
||||
key,
|
||||
expirationTime,
|
||||
}: {
|
||||
audience: string;
|
||||
subject: string;
|
||||
key: string;
|
||||
expirationTime?: number | string | Date;
|
||||
}) {
|
||||
return await new SignJWT({})
|
||||
.setProtectedHeader({ alg: "RS256" })
|
||||
.setIssuedAt()
|
||||
.setExpirationTime("1h")
|
||||
.setIssuer(process.env.ZITADEL_SYSTEM_API_USERID ?? "")
|
||||
.setSubject(process.env.ZITADEL_SYSTEM_API_USERID ?? "")
|
||||
.setAudience(process.env.ZITADEL_ISSUER ?? "")
|
||||
.sign(await importPKCS8(process.env.ZITADEL_SYSTEM_API_KEY ?? "", "RS256"));
|
||||
.setExpirationTime(expirationTime ?? "1h")
|
||||
.setIssuer(subject)
|
||||
.setSubject(subject)
|
||||
.setAudience(audience)
|
||||
.sign(await importPKCS8(key, "RS256"));
|
||||
}
|
||||
|
@@ -11,7 +11,8 @@
|
||||
"SYSTEM_USER_PRIVATE_KEY",
|
||||
"ZITADEL_API_URL",
|
||||
"ZITADEL_USER_ID",
|
||||
"ZITADEL_USER_TOKEN"
|
||||
"ZITADEL_USER_TOKEN",
|
||||
"ZITADEL_SYSTEM_API_USERID"
|
||||
],
|
||||
"tasks": {
|
||||
"generate": {
|
||||
|
Reference in New Issue
Block a user