2024-07-25 23:16:07 -04:00
|
|
|
import { NewAuthorizationBearerInterceptor } from "@zitadel/client";
|
2024-06-11 09:55:03 -04:00
|
|
|
import {
|
2024-07-16 09:20:40 -04:00
|
|
|
createGrpcTransport,
|
|
|
|
|
GrpcTransportOptions,
|
2024-06-11 09:55:03 -04:00
|
|
|
} from "@connectrpc/connect-node";
|
2024-05-28 11:24:12 -04:00
|
|
|
import { importPKCS8, SignJWT } from "jose";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create a server transport with the given token and configuration options.
|
|
|
|
|
* @param token
|
|
|
|
|
* @param opts
|
|
|
|
|
*/
|
|
|
|
|
export function createServerTransport(
|
|
|
|
|
token: string,
|
2024-07-16 09:20:40 -04:00
|
|
|
opts: GrpcTransportOptions,
|
2024-05-28 11:24:12 -04:00
|
|
|
) {
|
2024-07-16 09:20:40 -04:00
|
|
|
return createGrpcTransport({
|
2024-05-28 11:24:12 -04:00
|
|
|
...opts,
|
|
|
|
|
interceptors: [
|
|
|
|
|
...(opts.interceptors || []),
|
|
|
|
|
NewAuthorizationBearerInterceptor(token),
|
|
|
|
|
],
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function newSystemToken() {
|
|
|
|
|
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"));
|
|
|
|
|
}
|