if (options.queues.amqp.url) {
this.queuePublisher = new QueuePublisher(logger, options.queues.amqp);
}
- this.mysteryBox = new MysteryBox(logger, options);
+ this.mysteryBox = new MysteryBox(options);
+ this.mysteryBox.on('statistics', common.mysteryBoxLogger(logger, _fileScope(this.constructor.name)));
// We need to know how the outside world sees us, to verify if a
// profile indicates us as the auth server.
const nowEpoch = common.dateToEpoch();
return this.mysteryBox.pack({
c: common.requestId(),
- iss: nowEpoch,
+ iat: nowEpoch,
exp: nowEpoch + ticketLifespanSeconds,
sub: subject,
res: resource,
const ticketObj = await this.mysteryBox.unpack(ticket);
return {
codeId: ticketObj.c,
- issued: new Date(ticketObj.iss * 1000),
+ issued: new Date(ticketObj.iat * 1000),
expires: new Date(ticketObj.exp * 1000),
subject: new URL(ticketObj.sub),
resource: new URL(ticketObj.res),
}
try {
- const result = await this.queuePublisher.publish(queueName, { ticket, resource, subject });
+ const result = await this.queuePublisher.publish(queueName, { ticket, resource, subject, epochMs: Date.now() });
this.logger.debug(_scope, 'accepted ticket offer', { queueName, ticket, resource, subject, ctx, result });
} catch (e) {
this.logger.error(_scope, 'failed to publish ticket to queue', { error: e, queueName, ticket, resource, subject, ctx });
try {
const result = await this.communication.deliverTicket(ctx.ticketEndpointUrl, ctx.ticketResourceUrl, ctx.ticketSubjectUrl, ticket);
- ctx.notifications.push(`Success! Ticket was delivered. (${result?.statusText})`);
+ ctx.notifications.push(`Success! Ticket was delivered. (${result?.statusMessage})`);
this.logger.info(_scope, 'ticket delivered', { ctx, result });
} catch (e) {
this.logger.error(_scope, 'failed to deliver ticket', { ctx, error: e });